我知道这个问题之前已经以多种不同的形式被问过。我阅读了与该问题相关的所有帖子,但我无法让代理和主服务器相互通信。我通过 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 将会改变。