如何在不修改客户端上的 /etc/hosts 的情况下在主机名上拥有 Puppet Master?

如何在不修改客户端上的 /etc/hosts 的情况下在主机名上拥有 Puppet Master?

我为我的 puppetmaster 创建了一条 A 记录。如果此 IP 地址上的 puppetmaster 出现故障,而我必须从新 IP 地址生成新的 puppetmaster,我只需将 A 记录中与主机名关联的 IP 地址更改为新机器的 IP 地址即可。

我希望我的所有 puppetclient 都能够仅通过 A 记录中的主机名连接到新的 puppetmaster。

$ dig puppetmaster.mywebsite.com

;; ANSWER SECTION:
puppetmaster.mywebsite.com.  300     IN      A       1.2.3.4

我的客户端有主机名puppetclient-01,我的主服务器有主机名puppetmaster

在我的 Puppet 客户端上,我没有将主机名解析puppetmaster到特定 IP 的条目,/etc/hosts因为如果puppetmaster发生故障,我必须从新的 IP 启动新的 Puppet Master,我想避免更改/etc/hosts客户端中的所有文件。

我对默认设置做的唯一更改是添加/etc/puppet/puppet.conf这个puppetclient-01

[agent]
server = puppetmaster.mywebsite.com

puppetclient-01运行这个

root@puppetclient-01:~# puppet agent --test
info: Creating a new SSL key for puppetclient-01
info: Caching certificate for ca
info: Creating a new SSL certificate request for puppetclient-01
info: Certificate Request fingerprint (md5): 12:34:56:78:CB:81:62:2E:5F:AB:40:54:D0:A1:37:95
Exiting; no certificate found and waitforcert is disabled

然后puppetmaster我运行这个

oot@puppetmaster:~# puppetca --sign puppetclient-01
notice: Signed certificate request for puppetclient-01
notice: Removing file Puppet::SSL::CertificateRequest puppetclient-01 at '/var/lib/puppet/ssl/ca/requests/puppetclient-01.pem'

然后puppetclient-01当我尝试玩木偶游戏时

root@puppetclient-01:~# puppet agent --test
info: Caching certificate for puppetclient-01
err: Could not retrieve catalog from remote server: Server hostname 'puppetmaster.mywebsite.com' did not match server certificate; expected puppetmaster
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run
err: Could not send report: Server hostname 'puppetmaster.mywebsite.com' did not match server certificate; expected puppetmaster

为什么我会收到错误Server hostname 'puppetmaster.mywebsite.com' did not match server certificate; expected puppetmaster

我需要在客户端或主服务器上更改任何指令etc/puppet/puppet.conf才能使其正常工作吗?

答案1

看起来您在生成主证书时没有使用 FQDN。以下http://docs.puppetlabs.com/guides/troubleshooting.html:如果sudo puppet master --configprint certname在主生产puppetmaster而不是puppetmaster.mywebsite.com您需要:

重新生成 Puppet Master 的证书:

停止 Puppet Master。删除 Puppet Master 的证书、私钥和公钥:

$ sudo find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete

编辑 puppet master 的 /etc/puppet/puppet.conf 文件中的 certname 设置以匹配 puppet master 的实际主机名,并编辑该文件中的 dns_alt_names 设置以匹配您认为 master 需要响应的任何其他 DNS 名称。启动非守护进程的 WEBrick puppet master 实例,并等待它生成并签署新证书:

$ sudo puppet master--no-daemonize--verbose

看到“通知:正在启动 Puppet Master 版本 2.6.9”消息后,您应该使用 ctrl-C 停止临时 Puppet Master。重新启动 Puppet Master。

相关内容