リモートからchef-soloを実行したい時にknife-soloを使用するといいよ!
っていうお話
knife-soloのinstall
gemなので下記のコマンドでinstallで来ます
$ gem install knife-solo
もしくはgithubから
$ git clone git://github.com/matschaffer/knife-solo.git $ cd knife-solo $ rake install
knife-soloで使用するパスを指定
echo "knife[:solo_path] = '/tmp/chef-solo'" >> ~/.chef/knife.rb
knife-soloコマンド説明
今回はこの記事で作成した
vmを使用しているので対象のIPはそれぞれに合わせてかえてください。
レシピ転送+実行
$ knife solo cook 192.168.50.12
リモートホストにchef-soloをインストール
$ knife solo prepare 192.168.50.12
run_listを指定
$ knife solo cook 192.168.50.12 -o hoge::default, nginx::default
転送したレシビを削除
$ knife solo clean 192.168.50.12
knife-soloでchef soloを生成
初期化
chef-repoというディレクトリ内にchef solo用のファイルを生成してくれる
$ knife solo init chef-repo
cookbook作成
-o オプションでsite-cookbooks内にhoge cookbookを作成
$ knife cookbook create hoge -o site-cookbooks
-o を使用しなければcookbooks内に作成されます。
補足
上記の手順を行いcookbook作成まで行った結果の
ディレクトリ構成が下記になります。
$ tree chef-repo chef-repo ├── Berksfile ├── cookbooks ├── data_bags ├── environments ├── nodes ├── roles └── site-cookbooks └── hoge ├── CHANGELOG.md ├── README.md ├── attributes ├── definitions ├── files │ └── default ├── libraries ├── metadata.rb ├── providers ├── recipes │ └── default.rb ├── resources └── templates └── default
cookbooksとsite-cookbooksどっちを使えばいいの?
って思っちゃいますが、下記が推奨されているようです。
- cookbooksの方は第三者が作成していて使いたいからDLしてきたcookbookを入れる
- site-cookbooksは自分が作成したcookbookを入れる
詳しくはこちらのドキュメントにのっております