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