為什麼廚師將我的節點名稱列為“localhost”?
我在 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 地址上(仍然是環回有效的)可確保系統名稱和域名之間的映射清晰。