Your SlideShare is downloading. ×
Chef solo 入門の入門
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Chef solo 入門の入門

4,974
views

Published on

chef-solo を始める上で最小限の内容を紹介しました。 …

chef-solo を始める上で最小限の内容を紹介しました。
多すぎる chef 用語の中から、chef-solo に必要な用語を解説。
混乱しがちな chef のファースト・ステップをまとめました。

Published in: Technology, Self Improvement

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,974
On Slideshare
0
From Embeds
0
Number of Embeds
24
Actions
Shares
0
Downloads
26
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. chef-solo 入門の入門 2013-12-09 (月) @アクトインディ株式会社 安宅 正之
  • 2. 目次 1. 2. 3. 4. 入門書紹介 chef-solo first step 用語解説 chef-solo の始め方 5. レシピの書き方
  • 3. とりあえず入門書 伊藤直也さんの書いた「入門 Chef Solo」 2013/3/11 発売
  • 4. 変更点 -- 出版時との違い 意外とハマる ● chef-solo 11.4.0 → 11.8.0 ● ruby 1.9 → 2.0 (released 2013/02/24) ● gem install vagrant → package 化 (1.1+) ● vagrant gem install sahara → vagrant plugin install sahara ruby 2.0 で gem install chef-solo がエラーになっ てインストール出来ない時期があったので混乱し ました
  • 5. chef-solo first step
  • 6. chef-solo インストール $ cat Gemfile source 'https://rubygems.org' gem 'chef' $ bundle install --path vendor/bundle
  • 7. chef-solo 実行 実行は sudo 権限で行う $ sudo bundle exec chef-solo -j node.json That’s all...
  • 8. 用語解説
  • 9. 専門用語多すぎ。訳が分からないよ! ● ● ● ● ● ● chef, chef-solo, Chef Server knife, knife-solo node, role repository, cookbook, recipe attribute, data bug Berkshelf
  • 10. 専門用語多すぎ。訳が分からないよ! ● ● ● ● ● ● chef, chef-solo, Chef Server knife, knife-solo node, role repository, cookbook, recipe attribute, data bug Berkshelf chef-solo だけなら青字を理解すれば OK
  • 11. Chef World [サーバー] node role [コマンド] chef-solo knife [設定ファイル] node.json cookbook recipe
  • 12. サーバーの用語 ● node: server (or PC/仮想環境) に対応 ○ ○ ○ ○ ○ albeniz server bach server chopin server dvorak server … ● role: server の役割に対応 ○ ○ ○ ○ ○ web server git server Redmine server 本番サーバー、ステージング・サーバー ...
  • 13. 設定ファイルの用語 ● server.json: サーバーごとの設定ファイル ○ 今回は node.json という名前を使います ○ recipe を指定する ● recipe: メイン・スクリプト in cookbook ● cookbook: chef における最小単位 ○ recipe や template を収納 ● cookbooks: cookbook を入れるディレクトリ ○ cookbooks: 既存の cookbook を入れる ○ site-cookbooks: 自作の cookbook を入れる ○ という区切りの筈だけど、デフォルトは /var/chef/cookbooks/ になっている
  • 14. cookbook の中身 ● ● ● ● ● ● ● ● ● ● ● CHANGELOG.md README.md attributes/ definitions/ files/ libraries/ metadata.rb providers/ recipes/ resources/ templates/
  • 15. cookbook の中身 ● ● ● ● attributes: 変数 files: 変数を使わないファイル recipes/default.rb: メインの処理を書く templates: attribute を使えるファイル ○ templates/default/filename.erb
  • 16. コマンドの用語 ● knife: cookbook の作成 ● chef-solo: node.json or recipe の実行
  • 17. chef-solo の始め方
  • 18. chef-solo 初期設定 $ sudo apt-get install ruby-dev # For gem json $ mkdir /etc/chef # Permission は適当につけてね $ mkdir /var/chef $ cd /etc/chef $ cat Gemfile source ’https://rubygems.org’ gem ’chef’ $ bundle install --path vendor/bundle # chef インストール $ bundle exec knife configure $ touch solo.rb
  • 19. cookbook を実行してみよう $ bundle exec knife cookbook create hello # cookbook 作成 $ vi /var/chef/cookbooks/hello/recipes/default.rb # recipe の編集 $ cat /var/chef/cookbooks/hello/recipes/default.rb log ’Hello, Chef!’ $ sudo bundle exec chef-solo -o hello … # recipe を指定 Recipe: hello::default * log[Hello, Chef!] action write
  • 20. node.json を使ってみる $ cat node.json { ”run_list” : [ ”recipe[hello]” ] } $ sudo bundle exec chef-solo -j node.json # 複数の recipe を扱うにはこっちの方が便利
  • 21. レシピの書き方
  • 22. Package プラットフォームに合わせてパッケージシステムを 選択・実行 ● Redhat … yum ● Debian … apt package ”zsh” do action :install end
  • 23. Git Git repository から取得 ● :checkout … 取得 ● :sync … 更新 git ”/usr/local/src/fcopy” do repository ”git://github.com/ataka/fcopy.git” reference ”master” action :checkout user ”ataka” end
  • 24. Bash -- Shell Script の実行 ● creates … スクリプト再実行をガードするファイ ルを指定する ● not_if, only_if … より詳細な設定向け bash ”install tc” do user ’ataka’ cwd ’/usr/local/src/tc’ code <<-EOC ./configure && make && make install EOC creates ”/usr/local/share/emacs/site-lisp/tc” end
  • 25. Directory ディレクトリ操作 chef はディレクトリを自動作成してくれない ● :create … 作成 ● :delete … 削除 directory ’/usr/local/src’ do owner ’ataka’ group ’staff’ mode ’0775’ action :create end
  • 26. Template 設定ファイルなどはコレ使え! filename.erb を templates/default 以下に置く template ”/etc/nginx/nginx.conf” do source ”nginx.conf.erb” # 省略可 owner ”root” group ”root” mode 0644 end
  • 27. 終わりに ● attribute については機会があったら ● Opscode の chef は使ったことがないので分か りません ● knife-solo はまだ使ったことないので分かりま せん ● vagrant で sahara を使うと幸せになれる ● rbenv 使ったら sudo でハマった ○ システムインストール ○ PATH 環境変数の引き渡し ○ いろいろやり方はあるけど、ベストプラクティスではない 気がする