Chef

為什麼廚師將我的節點名稱列為“localhost”?

  • September 8, 2015

我在 Linux 節點上安裝了 chef-client,它似乎已成功連接到我的 chef 伺服器。但是,當我這樣做時:chef node list,它顯示為“localhost”。

為什麼廚師不選擇節點的正確名稱?如果我詢問更多詳細資訊,我會看到:

$ chef node show localhost
node Name:   localhost
Environment: _default
FQDN:        localhost
IP:          192.168.1.5
Run List:    
Roles:       
Recipes:     
Platform:    ubuntu 11.10

它有一個正確的域名設置。例如,如果我這樣做:hostname,它返回“mynodename”,而不是“localhost”。

廚師如何確定節點的名稱?為什麼它在 FQDN 中顯示正確的名稱?

編輯:響應下面的 cjc,這裡有一些輸出ohai | grep host

(注:此節點執行在 EC2 上)

"fqdn": "localhost",
"hostname": "mynodename",
"public_hostname": "ec2-...-.amazonaws.com",
"local_hostname": "ip-...ec2.internal",
"hostname": "ip-...ec2.internal",

此外, hostname -s 給出了預期的輸出:

$ hostname -s
mynodename

原因似乎是 ohai 正在執行hostname --fqdn,它確實給出了“localhost”。

問題的根本原因似乎是我將主機名設置為“mynodename”而不是“mynodename.example.com”。如果我做:

sudo hostname mynodename.example.com

然後當我這樣做時它會做正確的事情:hostname --fqdn

我也有同樣的問題。這似乎是ohai的事情。但它有點深。最好的測試是查看 hostname –fqdn 是否返回合理的值。

它歸結為主機文件。使用 sudo hostname my.fqdn 設置主機名將不起作用。嚴格來說,這應該沒有必要,因為系統名稱與域名不同。但是進行反向查找的系統很容易混淆。底線,在您的 etc/hosts 文件中,您的 fqdn 應該是 ip 地址之後的第一個條目,如果這是您想要返回的,例如

127.0.0.1 myserver.mydomain.com myserver localhost # 有效,返回 fqdn

127.0.0.1 localhost myserver.mydomain.com myserver # 這將返回 localhost

127.0.0.1 myserver myserver.mydomain.com localhost # 這將返回 myserver

如果您查看預設的 etc/hosts 文件,您將看到 ubuntu 使用 127.0.1.1 和 127.0.0.1。那是因為這樣的情況。將主機名放在單獨的 IP 地址上(仍然是環回有效的)可確保系統名稱和域名之間的映射清晰。

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