使用Chef角色插入属性

时间:2013-06-19 19:07:22

标签: ruby chef role zabbix

我正在阅读Opscode的Roles页面,根据我的理解,我的角色文件,一个红宝石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运行时,上面指定的属性不会填充配置文件中的空白点。 cookbook的名称是zabbix_agent_corp,属性文件是default.rb文件。以下是应该填写的属性:

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

我是否需要采取不同的方式来调用食谱中的属性,或者我的角色文件是否写得不正确?

1 个答案:

答案 0 :(得分:4)

您在角色中创建的哈希需要与属性的定义匹配。

在这种情况下,您的角色应如下所示:

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

有关完整参考,请参阅Chef文档的Ruby DSL部分。

注意:Chef约定是属性名称应全部小写,带下划线而不是Pascal / CamelCase。例如。 ServerActive应为server_active