シェフ-役割

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サーバーにロールをアップロードする

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ロールを使用してChefサーバーにアップロードされます。

  • ロールはノード実行リストに追加されます。

  • 実行リストにロールがあるノードでChefクライアントを実行すると、ロールにリストされているすべてのレシピが実行されます。