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

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

为什么没有厨师拿起节点的正确名称? 如果我要了解更多细节,我会看到:

 $ 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”,而不是“本地主机”。

厨师如何确定节点的名称? 为什么在FQDN中显示正确的名字?

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

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

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

另外,主机名-s正在给出预期的输出:

 $ hostname -s mynodename 

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

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

 sudo hostname mynodename.example.com 

那么当我这样做的时候它做的是正确的: hostname --fqdn

我也有同样的问题。 这似乎是好事。 但是更深一点。 最好的testing是看主机名–fqdn是否返回合理的东西。

它归结为hosts文件。 使用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地址(仍然是回送有效的)上,确保系统名称和域名之间的干净映射。

在基于RHEL 5和6的Amazon AMI实例上。在这种情况下,请查看:

 /etc/sysconfig/network 

我怀疑是这样configuration:

 HOSTNAME=localhost DOMAINNAME=localhost 

在这种情况下,用以下方法进行修正:

 HOSTNAME=mynodename DOMAINNAME=mynodename.example.com 

在Debiantypes的Linux实例(如Ubuntu)上,您可以查看以下文件中的主机名:

 /etc/hostname 

并在那里做出改变。

厨师客户端在build立节点时使用ohai。 当你运行ohai |grep host时你会得到什么?

看看lib / ohai / plugins中的ohai源代码,对于linux提供者,我发现它基本上运行“hostname -s”,所以这有点神秘,给你的结果。

厨师 – 客户端运行后,主机名是否可以设置?

对我来说,它似乎是/ etc / hosts上的一个问题。 我的/ etc / hosts文件看起来像

 127.0.0.1 localhost myhostname ... ... 

删除/ etc / hosts文件中的localhost可以解决我的问题。 无论如何,我不需要本地主机。