はじめてのchef
とりあえずchefのインストール
$ curl http://www.opscode.com/chef/install.sh | sudo bash
sudoなのでpasswordを聞かれると思うので入力
「Thank you for installing Chef!」って言われたら終わり
もしくはこっち
$ gem install chef
これでインストールは終わり!
簡単!
クックブック作成
下記の順にやる
$ git clone git://github.com/opscode/chef-repo.git $ knife configure $ cd chef-repo/ $ knife cookbook create hoge -o cookbooks
これでchef-repo/cookbooksにhogeができているはず
レシピ編集
よくあるやーつを表示するレシピを作成してみる
$ vi cookbooks/hoge/recipes/default.rb
レシピを編集
+ log "Hello, Chef!"
jsonファイル作成
$ vi roles/localhost.json
+ { + "run_list" : [ + "recipe[hoge]" + ] + }
run_listで使用するrecipeを指定しています。
(hogeの部分がcookbooks/内のディレクトリ名をさしている感じ)
ディレクトリを指定するファイル作成
$ vi solo.rb
+ file_cache_path "/tmp/chef-solo" + cookbook_path ["上で作成したcookbooksのディレクトリを記述"]
file_cache_path:ファイルキャッシュとして使用するディレクトリのパス
cookbook_path:実際に使用するcookbookのパス
実行
作成したレシピを実行してみる
$ sudo chef-solo -c solo.rb -j roles/localhost.json Starting Chef Client, version 11.10.4 Compiling Cookbooks... Converging 1 resources Recipe: hoge::default * log[Hello, Chef!] action write Running handlers: Running handlers complete Chef Client finished, 1/1 resources updated in 2.667612 seconds
こんな感じのが出力されれば成功
chefでパッケージをインストール
zshをインストールしてみる
$ vi cookbooks/hoge/recipes/default.rb
+ package "zsh" do + action :install + end
これで先ほどと同じく実行すると。。。
$ sudo chef-solo -c solo.rb -j roles/localhost.json Starting Chef Client, version 11.10.4 Compiling Cookbooks... Converging 2 resources Recipe: hoge::default * log[Hello, Chef!] action write * package[zsh] action install - install version ...... of pakage zsh Running handlers: Running handlers complete Chef Client finished, 2/2 resources updated in 2.667612 seconds
zshがインストールされました。
もう少し複雑に
他にも色々入れてみる
default.rbを編集
- package "zsh" do - action :install - end + %w{zsh gcc make readline-devel}.each do |package_name| + package package_name do + action :install + end + end
%w{zsh gcc make readline-devel}
["zsh", "gcc", "make", "readline-devel"]
上記2つは同義
あとはいつも通りchef-soloを実行
とりあえずここまで