Puppet代理无法找到服务器。

24

我是Puppet的新手,但学习进度很快。今天在尝试运行以下命令时遇到了问题:

$ puppet agent --no-daemonize --verbose --onetime

**err: Could not request certificate: getaddrinfo: Name or service not known
Exiting; failed to retrieve certificate and waitforcert is disabled**

看起来代理不知道连接到哪个服务器。我可以在命令行上指定--server,但是当这个程序作为守护进程在生产环境中运行时,这种方法对我没有任何用处,因此,我会在/etc/puppet/puppet.conf中指定服务器名称,像这样:

[main]
    server = puppet.<my domain>

我有一个DNS记录为puppet.<my domain>,如果我运行dig puppet.<my domain>,我可以看到名称解析正确。

我阅读过的所有Puppet文档都说明代理默认尝试连接到puppet主机,你需要使用主机文件技巧或者采取正确的方法,在DNS中创建一个CNAME,并相应地编辑 puppet.conf 文件,我已经这样做了。

那么我错过了什么?非常感谢任何帮助!


玩得更多后,我开始怀疑当以这种方式执行时,puppet.conf是否被读取。我在puppet.conf中放了垃圾,甚至试图删除它,但无论哪种情况都似乎不会影响从命令行运行代理时的结果。然而,当作为服务运行时,它确实阻止清洁启动和关闭。难道问题就是这么简单吗? - Kent Rancourt
5个回答

57

哎呀!需要使用sudo才能执行此操作!然后一切正常。


10
当你不使用sudo时,Puppet将只读取~/.puppet/puppet.conf而非/etc/puppet/puppet.conf。Puppet可以在没有root权限的情况下运行,但显然不能安装系统包或管理服务等。 - Dominic Cleal
1
也抓住了我。谢谢 :) - Igor Zevaka
一个小提示。当在CentOS上使用像puppet这样的特殊用户安装Puppet时,您必须使用该用户运行它并提供--server参数,例如:sudo -u puppet puppet agent --server=puppet.my-domain.com - Anton Babenko
花了30分钟,然后我找到了黄金! :P - TeaCupApp
1
我曾经提出了这个问题,得到了答案和第一条评论的点赞,但最终还是回到了这里... - castis

3

我必须使用--server标志:

sudo puppet agent --server=puppet.example.org

我运行了没有noop选项的命令,但使用了--server选项puppet agent -t --server=puppet-server - tkjef

0

我曾经遇到过同样的错误,但我是在使用两个学习 Puppet 虚拟机并尝试运行“puppet agent --test”命令时出现的。

我通过在主节点和代理虚拟机上打开 /etc/hosts 文件,并检查相关行来解决了这个问题。

***.***.***.*** learn.localdomain learn puppet.localdomain puppet

IP地址(星号)最初是一些随机数字。我不得不在两台虚拟机上更改此数字,以使它成为主节点的IP地址。

因此,对于有经验的用户来说,我的建议是检查/etc/hosts文件,确保这里的主和代理IP地址不仅匹配,而且与主节点的IP地址相同。

对于像我这样的新手,我的建议是更仔细地阅读文档。这是“设置代理vm”的过程中我完全错过的一步 xD


0
今天在CentOS 6.4上的puppet 2.6遇到了同样的问题。 我解决这个问题的方法很简单,只是检查了一些常见的东西,比如hosts和resolv.conf,确保它们与一个正常工作的服务器相同,然后:
1. 删除/var/lib/puppet目录:rm -rf /var/lib/puppet 2. 清除puppet主机上的证书:puppetca --clean servername 3. 重启网络:service network restart 4. 重新运行puppet
尽管resolv.conf与正常工作的服务器完全相同,但puppet还是更新了resolv.conf,并立即重新签署了证书并替换了所有puppet库文件。
之后一切都恢复正常了。

0
在我的情况下,我遇到了相同的错误,但是这是由于应该签署给puppetmaster服务器上的节点的证书引起的。
要检查待处理的证书,请运行以下命令:

puppet cert list

"node.domain.com" (SHA256) 8D:E5:8A:2*******"

将证书签署给节点:

puppet cert sign node.domain.com


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接