我为我的 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。