我正在阅读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'] = ""
我是否需要采取不同的方式来调用食谱中的属性,或者我的角色文件是否写得不正确?
答案 0 :(得分:4)
您在角色中创建的哈希需要与属性的定义匹配。
在这种情况下,您的角色应如下所示:
default_attributes
'zabbix' => {
'agent' => {
'conf' => {
'Server' => 'zabbix-server1.com',
'ServerActive' => 'zabbix-server1.com'
}
}
}
有关完整参考,请参阅Chef文档的Ruby DSL部分。
注意:Chef约定是属性名称应全部小写,带下划线而不是Pascal / CamelCase。例如。 ServerActive
应为server_active
。