Linux
在引導時/之後將廚師主機名設置為節點名
我用 Chef 測試 atm,我有一個虛擬機,我正在複製它以生成新節點。我使用刀命令和 -N 參數進行引導,為每個主機提供一個節點名。問題很棘手,VM 上的主機名沒有改變,如果我試圖引導另一個客戶端,它會失敗,因為 Chef 已經註冊了這個節點。我現在確實嘗試使用主機名cookbok在我的基本角色中設置主機名,但是當我執行它時,它給了我一個:
chef-client
---- Begin output of hostname @config[:chef_node_name] ---- STDOUT: STDERR: hostname: the specified hostname is invalid ---- End output of hostname @config[:chef_node_name] ---- Ran hostname @config[:chef_node_name] returned 1
基本角色的屬性是:
name "base" description "Base role applied to all nodes" override_attributes( "chef_client" => { "init_style" => "upstart", "server_url" => "http://chef.ws:4000" }, "set_fqdn" => "@config[:chef_node_name]" ) run_list( "recipe[hostname]", "recipe[chef-client::delete_validation]", "recipe[chef-client::service]" )
我在 set_fqdn 中有語法錯誤,還是在節點上根本無法訪問 @config 變數?有沒有更好的方法將主機名設置為節點名?
經過反複試驗,我很確定角色文件中無法訪問
@config
andnode
變數。我的解決方案是重寫主機名說明書以查找屬性nodename_as_fqdn
並進行相應設置。
節點名稱可通過訪問器在執行 chef 的節點上
node.name
訪問。您可以使用 chef_hostname 食譜將主機名設置為節點名稱,方法是將其放在 metadata.rb 中:
depends "chef_hostname"
然後設置主機名,如:
hostname node.name