使用 Puppet 仪表板作为 enc

使用 Puppet 仪表板作为 enc

0 反对 收藏

我正在使用多个 Puppet Master 设置,其中 Puppet 仪表板在单独的服务器上运行。我还配置了仪表板以使用 https 与 Passenger 一起运行。我想将 Puppet 仪表板变成 ENC。

我已经在每个 Puppet Master 上设置了以下配置(请原谅链接中的空格):

node_terminus = exec
external_nodes = /usr/bin/env PUPPET_DASHBOARD_URL=https:// puppet-dashboard /usr/share/puppet-dashboard/bin/external_node

我已经编辑了 external_node ruby​​ 脚本并为仪表板指定了 https URL,但是我在 Puppet 节点上收到此错误:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: 
Failed when searching for node ukserver0028.domain.net: Failed to find ukserver0028.domain.net via exec: Execution of '/usr/bin/env PUPPET_DASHBOARD_URL=https://puppet-dashboard /usr/share/puppet-dashboard/bin/external_node ukserver0028.domain.net' returned 127:
Error: Could not retrieve catalog; skipping run

selinux 设置为宽容

我在 Puppet Master 上运行了以下命令

/usr/bin/env PUPPET_DASHBOARD_URL=https://puppet-dashboard /usr/share/puppet-dashboard/bin/external_node ukserver0028.domain.net

但我收到此错误:

/usr/lib/ruby/1.8/net/http.rb:586:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

这让我找到了 external_node 脚本和 SSL 证书的路径

CERT_PATH 
PKEY_PATH 
CA_PATH   

我编辑了 external_node 文件并指向仪表板 SSL 使用的证书,这些证书是由 rake 工具创建的。

$ sudo -u puppet-dashboard rake cert:create_key_pair $ sudo -u puppet-dashboard rake cert:request

我还注意到,通用名称实际上是仪表板,而不是 puppet-dashboard,后者是我在 DNS 中的 c 名称。我现在可以成功运行以下命令。

/usr/bin/env PUPPET_DASHBOARD_URL=https://dashboard /usr/share/puppet-dashboard/bin/external_node puppet.domain.net

但是,如果我使用 Puppet Master 或 Puppet-Dashboard 服务器以外的任何其他节点运行相同的命令,我会收到 SSL 错误,我想是因为环境中的其他 Puppet 节点不知道或不知道 rake 工具创建的 Puppet 证书在仪表板上启用 HTTPS。

因此,我应该在 external_node 文件中使用哪些证书?

此外,我有一个沙坑环境,其中 puppet-dashboard 仅使用 http 运行。我通过在 puppet.conf 中正确指定 external_node 的路径并配置 external_node 文件以使用 HTTP 来使设置正常工作。因此,使用在 HTTPS 上运行的仪表板时肯定存在问题。

非常感谢-Oli

答案1

我设法修复了这个问题。一旦所有配置正确,一切就都正常了。

主要区域是 - externode_node 需要位于所有 puppet master 和 puppet 仪表板服务器上。证书位置应为在仪表板上启用 https 时由 rake 工具创建的位置。您可以在仪表板服务器上的 settings.yml 文件中看到这些。确保在 DASHBOARD_URL 中使用 rake 工具创建的证书中的通用名称,在大多数情况下是仪表板。如果需要,您可能需要为仪表板或 A 记录设置 c 名称。确保工作的 external_node 脚本已复制到所有 puppet master 服务器并且相同。我使用的位置是 /usr/share/puppet-dashboard/bin/external_node。确保 URL 为 https:// 仪表板或仪表板证书的 cn。否则,您将收到 SSL 名称与证书名称不匹配错误

每个主服务器上的 puppet.conf 文件有 2 行用于启用 ENC。如下所示:

node_terminus = exec
external_nodes = /usr/bin/env PUPPET_DASHBOARD_URL=https:// dashboard/usr/share/puppet-dashboard/bin/external_node

查看仪表板名称 - 与仪表板证书中的 CN 名称相同。确保在每个 Puppet Master 上重新启动 httpd。如果您仍在阅读本文,祝您好运!

相关内容