Linux

在引導時/之後將廚師主機名設置為節點名

  • March 11, 2016

我用 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 變數?有沒有更好的方法將主機名設置為節點名?

經過反複試驗,我很確定角色文件中無法訪問@configandnode變數。我的解決方案是重寫主機名說明書以查找屬性nodename_as_fqdn並進行相應設置。

節點名稱可通過訪問器在執行 chef 的節點上node.name訪問。

您可以使用 chef_hostname 食譜將主機名設置為節點名稱,方法是將其放在 metadata.rb 中:

depends "chef_hostname"

然後設置主機名,如:

hostname node.name

引用自:https://serverfault.com/questions/364013