我正在嘗試使用Chef來管理新的虛擬機。我正在使用專門的廚師服務器,並從單獨的工作站虛擬機執行所有這些工作。設置獨特廚師節點屬性的最佳實踐
我現在正在做的方式是克隆一個基本的虛擬機映像,然後使用刀引導來安裝廚師,並使虛擬機處於一致的狀態。
我可以指定vm的環境或運行列表;我可以覆蓋我的環境中的某些設置,例如我在測試環境的「overrides」塊中設置了chef-client間隔,以便在測試時每60秒運行一次客戶端,所以我不必每次都手動運行chef-client。
舉例來說,我的工作流程是這樣的:
克隆VM模板並啓動VM
手動設置主機名(更新/ etc /主機名和/ etc/hosts文件),並重新啓動
引導與初始配方節點
knife bootstrap chef-test1 -r 'recipe[ntp],recipe[chef-client]'
編輯節點,以反映新的環境
我有是設置每個節點的屬性問題。我想使用hostname cookbook來設置節點的主機名,如果我將它設置在一個角色中,那麼每個服務器都必須創建一個新角色。但是,當我試圖引導和包括這個角色時,我得到一個錯誤:
chef-test1 * log[Please set the set_fqdn attribute to desired hostname] action write[2013-12-09T16:26:56-07:00] WARN: Please set the set_fqdn attribute to desired hostname
當我引導,而不在於配方,並嘗試編輯節點並設置「set_fqdn」屬性,我無法保存屬性,例如此JSON:
{
"name": "chef-test1",
"set_fqdn": "chef-test1.local.fqdn",
"chef_environment": "test-dev1",
"normal": {
"tags": [
]
},
"run_list": [
"recipe[ntp]",
"recipe[chef-client]",
"recipe[hostname]"
]
}
,當我離開了我的編輯器,刀告訴我:
Node not updated, skipping node save
我試圖編輯廚師GUI這個屬性和屬性將不保存。
我發現this guy誰在/etc/chef/chef.json中創建了json,基本上做了我所期望的,但我不確定/etc/chef/chef.json如何發揮作用(更新它對於每個新節點?我不使用廚師獨奏,所以也許這就是我的困惑所在)。
根據this email thread無法用knife node edit覆蓋默認屬性,但「set_fqdn」不是默認值。我想,以避免創建每個節點的作用,我想我可以使用主機名菜譜,以緩解需要手動設置主機名,是這樣的:
knife bootstrap saucy64 -r 'recipe[ntp],recipe[chef-client],recipe[hostname]' --json '"{ set_fqdn": "chef-test1.local.tld", "chef_client": { "interval": "600" }'
knife bootstrap fedora19 -r 'recipe[ntp],recipe[chef-client],recipe[hostname]' --json '"{ set_fqdn": "chef-test2.local.tld", "chef_client": { "interval": "60" }'
我很欣賞的幫助。
我在使用ec2實例的主廚設置主機名的同樣困難。請幫助 – user3086014