入門 Chef Solo 第5章 リモートから chef-solo を実行する - knife-solo

  • Chef Solo だと設定するサーバ上に Chef がインストールされていてレシピファイルを編集して実行することになるので面倒
  • knife-solo でリモートの chef-solo の実行をサポート
  • インストールは rubygems
    • 開発が活発なので最新版を使いたいときは github から clone して rake install を勧めています
    • knife-solo 0.3.0 を推奨していますが 0.3.0 は現時点でまだ pre3 までしか公開されていないので gem install --pre knife-solo で入れないといけないようです
    • 0.3.0 を使う時は ~/.chef/knife.rb に以下の設定を追加
knife[:solo_path] = '/tmp/chef-solo'
  • knife solo prepare (host); knife solo prepare (user)@(host) でリモートに chef-solo をインストール
  • knife solo cook (host) でレシピ転送&リモート実行ができる
  • knife solo cook (host) -o hello::default,nginx::default で run_list を個別に指定
  • knife solo clean (host) で転送したレシピ群を削除
  • knife solo init chef-repo 新規 Chef レポジトリを作る。この方法で作ると最適なディレクトリ構成になるそうなので knife-solo を使って作ったほうがよさそう
  • ただし ssh 経由で sudo でパスワードを要求せず chef-solo を実行できるようになってないといけない
    • vagrant の例で Host Only Network にしたのはこの権限の調節のため

必要な前提条件は ssh でログインできて、そのアカウントで sudo できる、ということですが、今時クラウドサービス等で立ち上げるサーバはたいていこの条件は満たせるので良さそうです。 Chef そのものもインストールできるというのがいいですね。