Cookbookの作成から実行までの流れ
Chef Server、Chef Clientのインストール後の流れを簡単にまとめておく。
① Cookbookの作成
まずは、knifeコマンドで任意の名称のCookbookを作成する。
# knife cookbook create Cookbook名 -o ~/chef-repo/cookbooks |
次に、Recipe、Template、File等をそれぞれ所定のディレクトリに作成する。
- Recipe・・・~/chef-repo/cookbooks/クックブック名/recipes
- Template・・・~/chef-repo/cookbooks/クックブック名/templates/default
- File・・・~/chef-repo/cookbooks/クックブック名/files/default
Cookbookが作成できたら、knifeコマンドでSyntaxチェックを行い、Chef Serverにアップロードする。
# knife cookbook test Cookbook名 ←Systaxエラーがあるとここで引っかかる # knife cookbook upload Cookbook名 |
② Roleの作成
knifeコマンドでRoleを作成する。
# knife role create Role名 -e vim { "name": "Role名", "discription": "", "json_class": "Chef::Role", "default_attributes": { "Attribute名": "Attibuteの値" ←ここにAttributeを追加 }, "override_attributes": { }, "chef_type": "role", "run_list": [ "recipe[Cookbook名::Recipe名]" ←ここにRecipeを追加 ], "env_run_lists": { } } |
■ ポイント
- Roleの作成は必須ではない。
- "run_list"には複数のRecipeを追加可能。
- 必要に応じて、Attributeも追加する。
③ Environmentの作成
knifeコマンドでEnvironmentを作成する。
# knife environment create Environment名 -e vim { "name": "Environment名", "discription": "", "cookbook_versions" : { }, "json_class": "Chef::Environment", "chef_type": "environment", "default_attributes": { "Attribute名": "Attibuteの値" ←ここにAttributeを追加 }, "overide_attributes": { } } |
■ ポイント
- Environmentの作成は必須ではない。
- 例として、development(開発環境)、staging(ステージング環境)、production(本番環境)といった名前で作成する。
- 必要な環境分作成する。
- 必要に応じて、Attributeも追加する。(環境毎に変わるホスト名等をAttributeに持たせると便利)
④ Nodeのrun list編集
knifeコマンドでNodeのrun listを編集する。
# knife node edit Node名 -e vim { "name": "Node名", "chef_environment": "Environment名", ←ここにEnvironment名を指定 "normal" : { "tags": [ ], "Attribute名": "Attibuteの値" ←ここにAttributeを追加 "run_list": [ "recipe[Cookbook名::Recipe名]" ←ここにRecipeやRoleを追加 ] } |
■ ポイント
- 必要に応じて、Environmentを指定する。デフォルトの場合は、"_default"を指定する。
- 必要に応じて、Attributeを追加する。
- "run_list"には複数のRecipeやRoleを追加可能。Roleを追加する場合は、"role[Role名]"と記述する。
⑤ chef-clientの実行
knifeコマンドでchef-clientを実行する。ここでは、sshオプションを使用し、Chef Client側ではなく、Chef Server側から実行する。
■ ポイント
- デバッグモードで実行したい場合は、"sudo chef-client -l debug"とする。