chef - knife solo を使う
chef-solo を簡単に使うには knife solo を使います。
chef-serverを使わなくてもリモート実行できるので楽に一元管理できます。
インストール
今回 chef はすでにインストール済みとします。
knife-solo を gem でインストールします。
$ gem install knife-solo
Berkshelf または Librarian-Chef を使うとよいとのことで、
今回は前者をインストールします。
$ gem install berkshelf
rbenv を使っている場合は、rehashしておきましょう。
$ rbenv rehash
kitchenの作成
kitchen(cookbookのリポジトリをおく場所)を初期化します。
設定ファイルやディレクトリツリーが作成されます。
今回は chef-repo というkitchenを作成します。
$ knife solo init chef-repo
以下のようなディレクトリとファイルが作成されます。
- chef-repo/
- -cookbooks
- -data_bags
- -environments
- -nodes
- -roles
- -site-cookbooks
- -.chef/knife.rb
以下は、chef-repo ディレクトリで実行します。
レシピの作成
chef-solo のときと同じように、knife cookbook で作成します。
site-cookbooks 以下に作成します
$ knife cookbook create mysql -o site-cookbooks
run_list の作成
chef-solo のときに-jオプションで指定したJSONファイルを、
nodes/ 以下に作成します。
knife node コマンドで作成すると便利です。
$ knife node create localhost -z -e vim
ノード名として実行するホスト名を入力します。
-e でエディタを指定します。(上記ではvimを指定)
run_list に、実行したいレシピのリストを追加します。
{ "run_list": [ "recipe[mysql]" ] }
保存すると nodes/localhost.json (localhostは引数で指定したノード名) に
出力されます。
実行する
knife solo cook コマンドで実行します
$ knife solo cook bibio@localhost --no-chef-check
bibio は対象ホストのユーザ名、localhostは対象ホスト名を指定します。
--no-chef-check は、chefのバージョンチェックをスキップします。
Chef(Opscode)のrpmを使用しない場合エラーとなるので追加しています。
途中何回かパスワードとパスフレーズの入力が求められます。
パスフレーズは無い方が楽なのはこのためです。
テスト実行は -W オプションを指定します。
$ knife solo cook bibio@localhost --no-chef-check -W