我已经为 puppet 构建了一个测试实验室,但它不起作用。我puppet agent
在节点上启动它,它等待证书。
root:~# puppet agent --server xxxx --waitforcert 60 --test
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
在服务器上,现在发现待处理的证书请求:
root:~# puppet cert --list
root:~#
在 masterhttpd 日志中:
root:~# tail /var/log/puppet/masterhttp.log
[2012-01-06 09:19:17] xxx - - [06/Jan/2012:09:19:17 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:17] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw
未找到证书文件。
答案1
我建议你以如下方式启动 Puppet 代理
$ puppet agent --server=xxxx --test --debug
此命令将为您提供有关失败原因的更多详细信息。此外,您可能需要留出更多时间才能完成。
您还可以尝试从任何方面删除证书(分别在主服务器和代理服务器上)
puppet --cert --clean your_machine_name
rm -rf /etc/puppet/ssl
答案2
我第一次使用 Puppet 时就遇到了类似的问题。 --server 选项没有被遵守。
尝试向您的 HOSTS 文件添加一个名为“puppet”的条目以及您的主箱的 IP。
如果有效,则以下语法可以正常工作(至少对于 2.7.5 版本)
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
server = puppetmaster.yourdomain.org
pluginsync = true
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = puppetmaster.yourdomain.org
listen = true
答案3
看来您已验证代理已到达主服务器。第一步做得很好。
接下来,正如其他人所建议的那样,验证证书是否未签名,并且您没有错过它:
sudo puppet cert --list --all
如果您在那里看不到它,我会清理一切并重新开始。
首先,确认两台服务器上的日期和时间同步。您可以使用 之类的命令强制进行 NTP 同步ntpd -q -g
,具体取决于您的发行版和 NTP 客户端。
clean
然后,在 Puppet Master 上运行:
sudo puppet cert clean <agent hostname>
在代理上,清理所有 SSL 文件:
sudo rm -rf /var/puppet/ssl /var/lib/puppet/ssl/ /var/puppet/ssl
最后,运行测试:
sudo puppet agent --debug --test --server <master hostname>
如果这不能解决问题的话,希望这能给你提供一些线索,告诉你应该去哪里查找。