問題提起:chef-soloのHello Worldは手順が多すぎる
「入門Chef-Solo」に書いてあるHello Worldを馬鹿正直に実行しようとすると下記のような作業をしなければなりません。
$ curl -L http://www.opscode.com/chef/install.sh | sudo bash
$ git clone git://github.com/opscode/chef-repo.git
$ cd chef-repo
$ knife configure
# 質問聞かれたらエンターキーを押下
$ knife cookbook create hello -o cookbooks
cookbooks/hello/recipes/default.rb
を編集
default.rb
log "Hello World"
localhost.json
を作成
localhost.json
{
"run_list": [
"recipe[hello]"
]
}
solo.rb
を作成
solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path ["/home/ec2-user/chef-repo/cookbooks"]
ここまで来てやっとhello worldが実行できます。
$ sudo chef-solo -c solo.rb -j ./localhost.json
しかしこの手順、覚えられるでしょうか?
私は覚えられません。
Hello Worldの手順が、暗記できないほど多いというのは、Chefの初学者にとって非常に大きな障壁であると思います。
それぞれのコマンドが裏側で何をやっているのか、作成するファイルが何のためにあるのかが初心者にはわからないので、いわゆる「おまじない」だらけに見えます。
もっと簡単にならんのか。
そこで考えてみました。
よりよいchef-soloのHello World
(まだ模索中なので随時更新します)
$ curl -L http://www.opscode.com/chef/install.sh | sudo bash
$ mkdir chef-repo
$ cd chef-repo
solo.rb
を作成
solo.rb
file_cache_path "/tmp/chef-solo"
base = File.expand_path('..', __FILE__);
cookbook_path [ base + '/cookbooks', base + '/site-cookbooks']
$ mkdir -p cookbooks/hello/recipes
$ echo "log 'Hello World'" > cookbooks/hello/recipes/default.rb
$ sudo chef-solo -c solo.rb -o hello
改善のポイント
- "recipe[hello]" は "hello"と書ける
- localhost.jsonは不要。
-j ./localhost.json
の代わりに-o hello
で十分 - solo.rbの
cookbook_path
に絶対パスをベタ書きしない。 -
git clone git://github.com/opscode/chef-repo.git
はいらない。mkdir
で十分。 -
knife cookbook create hello -o cookbooks
が覚えられない。mkdir
で十分で。 -
knife configure
はいるのか?