chef clientについてのメモ


chefの理解を深める為に調べたことをツラツラと書く。

bootstrapの実行の流れ

knife bootstrapを実行時の処理の流れ

  1. workstationから対象ノードにsshしbootstrapスクリプトを実行
  2. chef-clientのinstall scriptをchefのサーバから取得
  3. chef-clientのinstall
  4. chef-clientを実行しchef serverに登録
  5. run-listがある場合はrun listを実行

chef-validator

nodeをchef serverに登録時に使用する認証の仕組み。workstationに保存されている秘密鍵をbootstrap処理時にnodeに保存し、その秘密鍵をchef serverとの認証に使用する。登録後は不要となるので削除していい。

chef serverへのnode登録に必要となる情報はvalidatorの名前と秘密鍵。

chef 12以降であればvalidatorの名前はデフォルトはORGNAME-validator (ORGNAMEはorganization名によって変化)。

validatorは複数登録可能で、knifeからもchef serverのWeb UI上からも追加可能。

https://docs.chef.io/server_manage_clients.html#chef-validator-keys
http://www.mattstratton.io/creating-multiple-validator-keys-in-chef/
http://stackoverflow.com/questions/24788920/chef-clients-and-validators

chef-clientの実行の流れ

chefで利用される鍵

chef-client, knife, chef-validatorでそれぞれchef-serverへのアクセスに専用の秘密鍵を利用する。

Nodeにはchef-clientのための秘密鍵及びchef-validatorの秘密鍵が保存される。chef-clientの秘密鍵はbootstrap処理時にchef serverにより生成されたものを利用する。chef-validatorの秘密鍵はknifeを実行したworkstation上のものが保存される。

Workstation上にはknifeで利用する秘密鍵がchef-repo毎に保存されている。

Chef server上での鍵管理操作

設定ファイル

knife.rb

項目 説明
log_level ログレベル :info
log_location ログファイルの場所 STDOUT
/var/path/to/log
node_name Chef serverの認証に使う名前又はknifeを実行しているホスト名 "nyamage"
client_key chef serverへのアクセスの際の認証に使用する秘密鍵 /Users/nyamage/.chef/nyamage.pem
validation_client_name chef server登録時に使うvalidation clientの名前 chef-validator
validation_key chef clientのchef serverへの登録に使用する秘密鍵 /etc/chef-server/chef-validator.pem
chef_server_url chef serverのURL https://chef.example.com
syntax_check_cache_path cookbookに保存されているどのrubyファイルがシンタックスチェック済みかを保存する場所を指定 /Users/nyamage/.chef/syntax_check_cache

Reference-Config Files-knife.rb