読者です 読者をやめる 読者になる 読者になる

まっしろけっけ

めもてきなやーつ

knife-soloを使ってみる

リモートから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を入れる

詳しくはこちらのドキュメントにのっております