为什么厨师将我的节点名称列为“localhost”?

Lor*_*ein 6 chef

我在 Linux 节点上安装了 Chef-client,它似乎已成功连接到我的 Chef 服务器。但是,当我这样做时:chef node list,它显示为“本地主机”。

为什么 Chef 不选择节点的正确名称?如果我询问更多详细信息,我会看到:

$ chef node show localhost
node Name:   localhost
Environment: _default
FQDN:        localhost
IP:          192.168.1.5
Run List:    
Roles:       
Recipes:     
Platform:    ubuntu 11.10
Run Code Online (Sandbox Code Playgroud)

它有一个正确的域名设置。例如,如果我这样做:hostname,它返回“mynodename”,而不是“localhost”。

Chef 如何确定节点的名称?为什么它在 FQDN 中显示正确的名称?

编辑:为了回应下面的 cjc,这里有一些输出ohai | grep host

(注意:此节点运行在 EC2 上)

"fqdn": "localhost",
"hostname": "mynodename",
"public_hostname": "ec2-...-.amazonaws.com",
"local_hostname": "ip-...ec2.internal",
"hostname": "ip-...ec2.internal",
Run Code Online (Sandbox Code Playgroud)

此外,主机名 -s 给出了预期的输出:

$ hostname -s
mynodename
Run Code Online (Sandbox Code Playgroud)

Lor*_*ein 6

原因似乎是 ohai 正在运行hostname --fqdn,它确实给出了“localhost”。

问题的根本原因似乎是我将主机名设置为“mynodename”而不是“mynodename.example.com”。如果我做:

sudo hostname mynodename.example.com
Run Code Online (Sandbox Code Playgroud)

然后当我这样做时它会做正确的事情: hostname --fqdn