puppet 服务器主机名与证书不匹配 - 无法验证。

puppet 服务器主机名与证书不匹配 - 无法验证。

我知道这个问题之前已经以多种不同的形式被问过。我阅读了与该问题相关的所有帖子,但我无法让代理和主服务器相互通信。我通过 vmwork 站启动了 2 个虚拟机,两者都在 linuxmint 17 上运行。

我将通过介绍客户端和 puppetmaster 中的 /etc/hosts 和 /etc/hostname 是什么样子来开始这个线程。

在我的客户端的虚拟机中,/etc/hostname 中的主机名如下所示:

puppetclient

我的客户端的 /etc/hosts 中的虚拟机主机如下所示:

127.0.0.1 localhost
127.0.1.1 puppetclient
192.168.75.143 puppetmaster

在我的 master 的 vm 中 /etc/hostname 如下所示:

puppetmaster

我的主人的 vm /etc/hosts 如下所示:

127.0.0.1 localhost
127.0.1.1 puppetmaster
192.168.75.144 puppetclient

我的主服务器中的 /etc/puppet/puppet.conf 如下所示:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

我的客户端中的 /etc/puppet/puppet.conf 如下所示:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

[agent]
server=puppetmaster

我在搜索过程中发现了许多 puppet.conf 变体,我不想在这里发帖。其中一种变体是server=puppetmaster在我的客户端和主虚拟机中都有 [main]。无论如何,对于我尝试过的所有 puppet.conf 变体,运行时出现的第一个错误sudo puppet agent --test总是warning: unable to fetch my node definitoin, but agent run will continue:错误,之后的错误对于我实现的每个 puppet.conf 变体都不同。有人能告诉我适合我的设置的正确配置吗?

谢谢

答案1

看来您首先安装并运行了 Puppet Master,然后更改了主机名。

在 Puppet Master 上执行: puppet config print certname 这将显示您的 Master 使用的证书名称。它应该与您的主机名相同。

您可以验证主证书中的通用名称是否与您的主机名匹配:

openssl x509 -noout -subject -in $(puppet config print ssldir)/certs/$(puppet config print certname).pem

另外,我建议在 puppet 配置中使用 FQDN。如果主机名不同,最简单的方法就是删除或重命名 SSL 目录:

mv $(puppet config print ssldir){,_}

然后重启 Puppet Master。您还需要在客户端节点上执行此操作,因为 CA 将会改变。

相关内容