1

私は Opscode のRolesページを読んでいましたが、私が理解したところでは、私の役割ファイルである ruby​​ DSL は次のようになっているはずです:

name "role_zabbix_agent_corp"
description "Assigning Server IP's to the config for Corporate side."
run_list "recipe[zabbix_agent_corp]"
default_attributes "zabbix_agent_corp" => { 
    "Server" => [ "zabbix-server1.com" ],
    "ServerActive" => [ "zabbix-server1.com" ]
}

ただし、chef-client実行を実行すると、上記で指定した属性が構成ファイルの空白の場所を埋めません。クックブックの名前はzabbix_agent_corpで、属性ファイルは default.rb ファイルです。以下は、入力することになっている属性です。

default['zabbix']['agent']['conf']['Server'] = ""
default['zabbix']['agent']['conf']['ServerActive'] = ""

クックブックで属性を呼び出すために別のことをする必要がありますか、それともロール ファイルが正しく記述されていませんか?

4

1 に答える 1

4

ロールで作成するハッシュは、属性の定義と一致する必要があります。

この場合、ロールは次のようになります。

default_attributes
  'zabbix' => {
    'agent' => {
      'conf' => {
        'Server' => 'zabbix-server1.com',
        'ServerActive' => 'zabbix-server1.com'
      }
    }
  }

完全なリファレンスについては、Chef ドキュメントのRuby DSLセクションを参照してください。

: Chef の規則では、属性名は Pascal/CamelCase ではなくアンダースコアを使用してすべて小文字にする必要があります。たとえばServerActive、 である必要がありますserver_active

于 2013-06-20T13:52:28.290 に答える