我在网上搜索,我看到其他一些人在其他列表/板上遇到了这个问题。当我在主服务器上签署证书后第二次运行 sudo puppetd --waitforcert 60 --test 时,我收到此错误-
notice: Got signed certificate
warning: Certificate validation failed; considering using the certname configuration option
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources during transaction: Certificates were not trusted: hostname was not match with the server certificate
我不确定我是否理解问题所在或如何解决它。所以这就是我问的原因。
我在我的局域网上的两台服务器上设置 puppet。puppetmaster 名为“puppet”,另一台服务器名为“puppetclient”。我将 puppet 放入 puppetclient 上的 /etc/hosts 中。
运行 hostname -f 将在各自的服务器上显示 puppet 和 pupperclient。我不确定还能尝试什么。有没有人有任何见解?
听起来像 puppetmaster 证书是在主机被命名为“puppet”以外的东西时创建的。重新创建证书,你应该很好。
存储在证书中的名称必须与您配置的客户端连接的名称(完全匹配)匹配。例如,如果您将客户端配置为连接到“puppet.domain.com”,如果证书命名为“puppet”,则会收到错误消息,反之亦然。
如果您想为您的 puppetmaster 使用 DNS CNAME,您可以使用以下命令启动 puppetmaster:
这将使 puppetmaster 使用
cname.domain.org
而不是默认的完全限定域名。flag 选项似乎对
--certname cname.domain.org
我有用(在 Amazon EC2 上)您可以询问facter (facter fqdn) 主机名是什么,看看是否与您的预期一致。还请查看(默认情况下)/var/lib/puppet/ssl/ 并查看证书的外观,如果它们没有可能是您的问题的正确主机名。由于 puppet 通过 HTTPS 进行所有通信,因此它对解析和主机命名相当敏感。
在您指定的客户端和服务器上安装 Puppet 之前,请检查 /etc/resolv.conf 文件并确认“搜索”行上的第一个域条目是您希望 Puppet 在其下运行的域。例如:
搜索 my.puppetdomain.com my.public.domain.com
名称服务器 192.168.1.1 名称服务器 xxx.xxx.1.1
在 Puppet 安装阶段,Puppet 服务器将根据 /etc/resolv.conf 中的第一个搜索条目生成其证书。我发现这很困难。如果您在任何 puppet 节点上看到与证书相关的错误,请执行以下步骤:
1) 编辑 /etc/resolv.conf 并验证“搜索”行中列出的第一个域是否反映了您希望 Puppet 运行的域。
2) 卸载 puppet(保持 /etc/puppet 目录不变)。
3) rm -rf /var/lib/puppet
4) 重新安装 Puppet(这将生成一个新的 /var/lib/puppet 目录)。
5) 如果在 Puppet 服务器上执行此操作,请运行/usr/sbin/puppetmasterd --mkusers(或者,运行/usr/local/sbin/puppetmasterd --mkusers)。这将在 /var/lib/puppet 中生成所有必需的文件,包括使用正确域名的新内部证书。
6) 如果在 Puppet 客户端上执行此操作,请以详细模式启动 Puppet,并启用 --waitforcert 标志: puppetd -server .puppetdomain.com --waitforcert 60 --test 这一步将向 Puppet 服务器发送证书请求。
7) 在 Puppet 服务器上,列出等待的证书:
puppetca --list
您应该看到发出请求的 Puppet 客户端的主机名:
puppetclient1.puppetdomain.com
8) 从 Puppet 服务器上,对刚刚列出的 Puppet 客户端的证书进行签名:
puppetca --sign puppetclient1.puppetdomain.com
然后你就完成了。
HTH....
puppet 和 puppetclient 都在 DNS 中解析吗?如果没有,您可以编辑 /etc/hosts 文件以映射 IP 和主机名。IIRC,您应该只需要在客户端上执行此操作。