1

我正在阅读 Opscode 的角色页面,据我了解,我的角色文件,一个 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 回答