3

让我引导你完成我的步骤。

  • 我有一个带有基本 RHEL 5.10 操作系统的节点;/etc/hosts 文件为空
  • 运行 CLI “hostname -f” 给出 server1-nodex.domain.com,这是正确的
  • 我成功引导节点;当我执行“knife node show node_name”时,我看到了正确的 FQDN,例如 server1-nodex.domain.com
  • 我运行一个配方,创建一个 /etc/hosts 文件,并以这种格式放置它;注意 IP 后面的别名 (nodex)。我需要这种格式!

    10.22.10.10 nodex server1-nodex.domain.com

  • 现在,如果我执行刀节点显示 node_name Chef 将 FQDN 显示为“nodex”。啊???
  • 果然运行CLI "hostname -f" 也给出了"nodex" 嗯???
  • 只是为了测试,我统计了一遍,但是以这种格式创建 /etc/hosts 文件;请注意别名现在出现在该行中的 FQDN 之后(我不需要这种方式)

    10.22.10.10 server1-nodex.domain.com nodex

  • 现在,如果我执行刀节点显示 node_name,Chef 会显示正确的 FQDN,“hostname -f”也是如此

为什么 Chef 会根据 /etc/hosts 文件中的内容对我的 FQDN 执行此操作?我有一个 pre-Chef 配置过程(shell 脚本),可以按照我想要的方式配置 /etc/hosts 文件,并且 FQDN 不会受到影响?

这是厨师中的“错误”还是至少是不良的副作用?

4

2 回答 2

1

我很确定这不是 Chef 的错,而是你 Linux 机器上的初始化脚本。他们阅读 /etc/hosts以确定如何设置主机名。

在看/etc/sysconfig/network-scripts

您应该能够在/etc/sysconfig/network.

于 2014-08-22T01:26:39.247 回答
1

主机文件格式为:

IP_address canonical_hostname [aliases...]

也就是说,IP 地址之后的第一个主机名是该系统的唯一名称,之后的任何内容都是别名。在您的示例中,您将它们颠倒过来。

通常默认情况下,您的解析器配置为首先在主机文件中查找主机名,然后使用 DNS 系统(请参阅 /etc/resolv.conf 和 /etc/host.conf)。因此,在您的系统上运行“hostname -f”来获取 FQDN 将受到您对 /etc/hosts 文件的更改的影响。

Chef (ohai) 使用解析器获取 fqdn。由于您对 /etc/hosts 的更改正在更改解析器的答案,因此它正在更改 Chef 的答案。

于 2015-03-24T14:53:21.603 回答