使用库存设置多个傀儡大师

使用库存设置多个傀儡大师

我已经成功设置了多个 Puppet Master,其中一个 Puppet Master 充当 CA,客户端可以从此 CA 服务器获取证书,但使用其指定的 Puppet Master 获取其清单。请参阅此问题了解更多信息。多个傀儡大师。但是,为了使它正常工作,我必须做几件事,并且会出现一个错误,我会解决的。

首先,为了让库存为连接到其指定 puppet-master (PM) 的 puppet-client (PC) 工作,我必须将 PM1 上的 CA 证书复制到 PM2 ca 目录。我运行了以下命令:

scp [email protected]:/var/lib/puppet/ssl/ca/ca_cr*.pem  [email protected]:/var/lib/puppet/ssl/ca/.

完成此操作后,我能够取消注释SSLCertificateChainFile, SSLCACertificateFile & SSLCARevocationFilePM2 上的 rack.conf VH 文件中的部分。完成此操作后,库存开始工作。这听起来是一种可以接受的做法吗?

其次,在 puppet.conf 文件中,我正在为客户端设置指定的 PM 服务器,例如server = puppet-master2.test.net。除非有更好的方法,否则这就是它在我的生产设置中的工作方式。因此,PC1 将与 PM1 通信,PC2 将与 PM2 通信。这是我出错的地方。当 PC2 首次从 PM1 上的 CA 请求证书时,证书会出现,然后我在 PM1 上的 CA 上签署证书。当我在 PC2 上执行 puppet agent --test(在 puppet.conf 中有 server = puppet-master2.test.net)时,我收到此错误:

Warning: Unable to fetch my node definition, but the agent run will continue:
Warning: Error 403 on SERVER: Forbidden request: puppet-master2.test.net(10.1.1.161) access to /certificate_revocation_list/ca [find] at :112

但是,如果我更改 PC2 puppet.conf 文件并指定 server = PM1 并重新运行 puppet agent --test,则不会出现任何错误。然后我可以将 puppet.conf 文件中的更改恢复为 server = PM2,一切似乎都正常运行。

我是否必须在 PM2 上设置某种 ProxyPassMatch,以便客户端向 /certificate_revocation_list/* 发出请求并将其重定向到 PM1?或者我该如何修复此错误?

干杯,奥利

答案1

完成此操作后,我能够取消注释 SSLCertificateChainFile, SSLCACertificateFile & SSLCARevocationFile PM2 上的 rack.conf VH 文件中的部分。完成此操作后,库存开始工作。这听起来是一种可以接受的做法吗?

不需要这样做 - 吊销列表和根证书应该已经在辅助主服务器上。在 PM2 上尝试以下文件位置:

SSLCertificateChainFile /var/lib/puppet/ssl/certs/ca.pem
SSLCACertificateFile    /var/lib/puppet/ssl/certs/ca.pem
SSLCARevocationFile     /var/lib/puppet/ssl/crl.pem

其次,在 puppet.conf 文件中,我为客户端设置了指定的 PM 服务器,例如 server = puppet-master2.test.net。除非有更好的方法,否则这就是它在我的生产设置中的工作方式。

您使用的是哪个版本的 Puppet?3.0 的 SRV 记录功能是解决此问题的绝佳方案,它允许您为客户提供一组可供他们选择的母版,并带有权重和优先级。

我是否必须在 PM2 上设置某种 ProxyPassMatch,以便客户端向 /certificate_revocation_list/* 发出请求并将其重定向到 PM1?或者我该如何修复此错误?

这是一个糟糕的默认设置auth.conf- 代理连接未经身份验证,默认设置是强制对 CRL 进行身份验证(不敏感)。将其添加到您的auth.confPM1 上:

path /certificate_revocation_list
auth any
method find
allow *

相关内容