2013-06-19 63 views
1

我讀Roles頁面在Opscode公司,並從我的理解,我的角色文件,紅寶石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'] = "" 

有什麼我需要做不同的調用在食譜的屬性,或者是我的角色文件編寫不正確?

+0

zabbix_agent_corp vs ['zabbix'] ['agent'] ['conf']。感受路徑最後部分的差異。 –

+0

因此,而不是我有權在default_attributes之後,把哈希? 'default_attributes「default ['zabbix'] ['agent'] ['conf']」=>'? – Pred

+0

在[Chef:我如何重寫角色中的默認屬性?]中可能存在重複或類似的帖子(http://stackoverflow.com/questions/12144592/chef-how-do-i-override-默認屬性在角色) – Pred

回答

4

您在角色中創建的散列需要與屬性的定義相匹配。

在這種情況下你的角色應該是這樣的:

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

見廚師文檔的Ruby DSL節的完整參考。

注意:廚師的約定是屬性名稱應該全部小寫,下劃線代替Pascal/CamelCase。例如。 ServerActive應該是server_active

+0

這些變量的Zabbix命名就像那樣。否則,我會遵循這些準則。 – Pred