ようへいの日々精進XP

よかろうもん

Chef Server を使ってみた一部始終

要件

  • Chef Server が必要になってきた
  • まずは手元で検証してみるが、情報を整理しながら実運用を見据えた検証をする
  • なんとなく動いてしまったので、手順を整理するまでは以下、暫定

問題点

  • client と node の区別、そこにきて user という登場人物...
  • cookbook をアップロードしてバージョンをクリックすると以下のようなエラーが出る(既知のエラーっぽい
ERROR: undefined method `close!' for nil:NilClass

手順

検証環境

Chef Server Debian 6.0.7
Chef Client(node) CentOS 5.8
Workstation Ubuntu 12.10

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 の登録を明確にしたい
    • いつの間にか登録されていたので...(汗
  • ぶっちゃげ、色々と試行錯誤していたら出来たという印象