Chef-roles

提供:Dev Guides
移動先:案内検索

シェフ-役割

Chefのロールは、ノードをグループ化する論理的な方法です。 典型的なケースは、Webサーバー、データベースサーバーなどのロールを持つことです。 すべてのノードにカスタム実行リストを設定し、ロール内の属性値をオーバーライドできます。

役割を作成する

vipin@laptop:~/chef-repo $ subl roles/web_servers.rb
name "web_servers"
description "This role contains nodes, which act as web servers"
run_list "recipe[ntp]"
default_attributes 'ntp' => {
   'ntpdate' => {
      'disable' => true
   }
}

ロールを作成したら、Chefサーバーにアップロードする必要があります。

Chef Serverへのロールのアップロード

vipin@laptop:~/chef-repo $ knife role from file web_servers.rb

次に、サーバーと呼ばれるノードにロールを割り当てる必要があります。

ノードに役割を割り当てる

vipin@laptop:~/chef-repo $ knife node edit server
"run_list": [
   "role[web_servers]"
]
Saving updated run_list on node server

Chef-Clientを実行する

user@server:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2013-07-25T13:28:24+00:00] INFO: Run List is [role[web_servers]]
[2013-07-25T13:28:24+00:00] INFO: Run List expands to [ntp]
...TRUNCATED OUTPUT...

使い方

  • Chefリポジトリのrolesフォルダー内のRubyファイルでロールを定義します。
  • ロールは、名前と説明の属性で構成されます。
  • ロールは、ロール固有の実行リストとロール固有の属性設定で構成されます。
  • 実行リストにロールを持つすべてのノードには、ロールの実行リストが独自に厳密に設定されます。
  • ロールの実行リスト内のすべてのレシピがノードで実行されます。
  • ロールは、fileコマンドからknife roleを使用してChefサーバーにアップロードされます。
  • ロールがノード実行リストに追加されます。
  • 実行リストにロールを持つノードでChefクライアントを実行すると、ロールにリストされているすべてのレシピが実行されます。