Posted at

chef clientについてのメモ

More than 3 years have passed since last update.

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を実行

https://docs.chef.io/chef_client.html#bootstrap-operations


chef-validator

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

https://docs.chef.io/chef_client.html#chef-validator

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

https://github.com/chef/chef/blob/master/lib/chef/api_client/registration.rb#L150-L156

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

https://getchef.zendesk.com/hc/en-us/articles/203821644-What-do-all-these-public-and-private-keys-do-

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の実行の流れ

https://docs.chef.io/chef_client.html#the-chef-client-title-run


chefで利用される鍵

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

https://docs.chef.io/chef_private_keys.html#how-keys-are-used

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

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

https://docs.chef.io/chef_private_keys.html#where-are-keys-stored

https://github.com/chef/chef/blob/master/lib/chef/knife/bootstrap/templates/chef-full.erb#L191-L196

https://getchef.zendesk.com/hc/en-us/articles/203821644-What-do-all-these-public-and-private-keys-do-


Chef server上での鍵管理操作

https://docs.chef.io/server_manage_clients.html


設定ファイル


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