我们都知道 (SF 的一个很好的例子)Puppet 主机名检测可能会很有趣。
在我们公司(我想我们并不是唯一这样做的人),我们通常会在办公室预先配置服务器并进行测试,然后再将设备带到远程数据中心并安装到机架上。当然,这样做时反向 DNS 会发生变化,即使我们不更改系统的实际主机名。
我们正在慢慢地起草我们的傀儡设置,我想确保这些举动不会造成问题。我的想法是certname
在puppet.conf
服务器配置时(在第一次傀儡运行之前)明确配置系统所需的完整 FQDN。我的流程看起来是这样的:
- 基本操作系统安装
- 基本网络配置,足以访问互联网并解析 DNS
- 安装 puppet 并设置 certname
- 启动 puppet 并让他管理整个配置
- 测试、修复配置中的问题(通过 puppet)、重新测试等等......
- 手动停止 Puppet
- 为数据中心网络设置新的网络配置
- 将机器移至 DC
- 开启它
- puppet 应该自动启动并继续执行其工作
该过程通过检测 Puppet 清单中的环境来支持(例如基于子网,如他们在维基百科上做) 并根据需要修改配置(例如resolv.conf
适合每个网络的内容)。每个节点的配置certname
在整个系统生命周期内都不会改变。
这种方法有什么问题吗?可以改进吗?
答案1
我同意强制使用证书名称会让事情变得更容易。但是,hostname
在确定时,命令本身的行为可能非常不一致--fqdn
(它解析 IP 以进行查找hostname
,然后查找该 IP 的反向名称;当然,所有这些都可以配置/etc/hosts
)。
如果您将系统的主机名配置为 FQDN,而不是短名称,那么 puppet 将不会尝试进行任何有趣的名称查找。它只会按原样使用该字符串,在第一个点处将其拆分为一个hostname
“和” ,并将其作为整个字符串。您可能还需要考虑这一点。domain
fqdn