シェフ-役割
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クライアントを実行すると、ロールにリストされているすべてのレシピが実行されます。