まっしろけっけ

めもてきなやーつ

はじめてのchef

とりあえずchefのインストール

$ curl http://www.opscode.com/chef/install.sh | sudo bash

sudoなのでpasswordを聞かれると思うので入力
「Thank you for installing Chef!」って言われたら終わり

もしくはこっち

$ gem install chef

これでインストールは終わり!
簡単!

クックブック作成

下記の順にやる

  • レポジトリのひな形を持ってくる
  • knifeの初期設定(色々聞かれるけどわからないならenter)
  • chef-repoのディレクトリに移動
  • クックブックhogeを作成
$ 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を実行
とりあえずここまで