要件
- Chef Server が必要になってきた
- まずは手元で検証してみるが、情報を整理しながら実運用を見据えた検証をする
- なんとなく動いてしまったので、手順を整理するまでは以下、暫定
問題点
- client と node の区別、そこにきて user という登場人物...
- cookbook をアップロードしてバージョンをクリックすると以下のようなエラーが出る(既知のエラーっぽい)
ERROR: undefined method `close!' for nil:NilClass
手順
Chef Server のインストール(簡単...当然、chef でセットアップされている)
1. こちらよりパッケージをダウンロード
cd /tmp sudo wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/11.04/x86_64/chef-server_11.0.6-1.ubuntu.11.04_amd64.deb
2. dpkg コマンドでインストール
cd /tmp sudo dpkg -i chef-server_11.0.6-1.ubuntu.11.04_amd64.deb
3. sudo chef-server-ctl reconfigure
sudo chef-server-ctl reconfigure
4. ブラウザでアクセス
Chef client(node)のセットアップ
- 既に chef-solo が使えている環境にセットアップ
- knife で操作するけど、基本的には不要
1. /root/.chef/knife.rb を設置する(必須ではない)
log_level :info log_location STDOUT node_name 'root' client_key '/root/.chef/root.pem' validation_client_name 'chef-validator' validation_key '/etc/chef/validation.pem' chef_server_url 'https://${chef_server_fqdn}' syntax_check_cache_path '/root/.chef/syntax_check_cache'
2. /etc/chef/client.rb を設置する
log_level :info log_location STDOUT chef_server_url 'https://${chef_server_fqdn}' validation_client_name 'chef-validator'
3. /etc/chef/validation.pem
- Chef Server の /etc/chef-server/chef-validator.pem の内容を /etc/chef/validation.pem として保存する
4. Chef Server に node として登録する
chef-client -k /etc/chef/validation.pem -S https://${chef_server_fqdn}
Workstation のセットアップ
- 既に chef-solo とか knife-solo とかバンバン叩いている環境
1. Chef Server に User を作る
- 作成したユーザー(例:hoge)の Private Key を生成した上でどっかにコピっておく
2. knife configure -i で knife.rb を生成
log_level :info log_location STDOUT node_name 'hoge' client_key '/home/hoge/.chef/hoge.pem' validation_client_name 'chef-validator' validation_key '/home/kappa/.chef/validation.pem' chef_server_url 'https://${chef_server_fqdn}' syntax_check_cache_path '/home/hoge/.chef/syntax_check_cache'
3. /home/hoge/.chef/hoge.pem に 1. で作成した Private Key の内容を反映
- コピペで対応した
4. /home/hoge/.chef/validation.pem
- Chef Server の /etc/chef-server/chef-validatior.pem の内容を /home/hoge/.chef/validation.pem として保存する
5. cookbook をアップロードする
cd ~/${your_chef_repo}/ knife cookbook upload ${cookbook} -o ./site-cookbooks/
6. node にレシピを関連付ける
knife node run_list add ${node_fqdn} 'recipe[${cookbook}]'
以上で一応、準備が終了。
node にて cookbook の適用
chef-client
まとめ
- 冒頭にも記載したが node と client と user の違いを整理したい
- node は cookbook の適用先
- client は API のユーザー
- user は Web UI のユーザー...という感じかな
- node の登録を明確にしたい
- いつの間にか登録されていたので...(汗
- ぶっちゃげ、色々と試行錯誤していたら出来たという印象