ダメSE uramonの奮闘記

インフラ関連技術など

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側から実行する。

# knife ssh "name:Node名" -a node.ipaddress "sudo chef-client" -i /root/.ssh/id_rsa

 

ポイント

  • デバッグモードで実行したい場合は、"sudo chef-client -l debug"とする。