缩放人偶 7.x

Scaling Puppet 7.x

我在考虑构建缩放的 Puppet 环境时一直在参考 https://puppet.com/docs/puppet/7.1/server/scaling_puppet_server.html

我的 Puppet CA 正在运行,我遇到的问题是 Puppet 编译部分的第 2 步缺少合适的示例或详细信息。

In the compiler's webserver.conf file, add and set the following SSL settings:

  • ssl-cert
  • ssl-key
  • ssl-ca-cert
  • ssl-crl-path

编译主机能够向 CA 发送请求,一旦证书在 CA 上签名,就可以正常取回。我不确定要为上述设置添加什么。已按照指示在编译主机上禁用 CA 服务,但在尝试启动 pupperserver 时,由于找不到 CaService,它无法加载,所以目前我假设这是由于上述原因造成的。

2021-01-12T13:12:34.276+11:00 ERROR [main] [p.t.internal] Error during app buildup! java.lang.RuntimeException: Service ':CaService' not found

google 搜索return 与此主题相关的内容不多,因此,如果能提供有关设置此类环境的任何有用指示,我们将不胜感激。

谢谢。

已提供 webserver.conf 配置文件的概述 in the Puppet docs. It happens to provide an example that covers all of those particular items, and it links to detailed documentation

关于 Puppet 可扩展性的一个主要想法是,您可以将编译服务器添加到您的池中,在负载平衡器或 DNS 轮询服务后面用于公共主机名。但其中一个主要问题是代理希望与由特定证书名称标识的编译服务器建立 SSL 连接,因此您必须确保每个编译服务器都有一个带有该名称的证书。这不是在多个服务器之间共享一个证书,通常是通过为编译服务器生成单独的证书来完成的,这些证书都具有预期的名称作为 DNS 主题备用名称ssl-certssl-key 属性标识适当的证书。

就他们而言,编译服务器需要验证客户端证书是否已由预期的 CA 签名,为此他们需要 CA 的证书。这就是 ssl-ca-cert 设置的意义所在。

此外,有时您可能需要吊销证书——通常是在代理节点停止服务或其证书不知何故丢失时。 CA 将维护一个证书撤销列表,但为了让编译服务器考虑到这一点,必须向它们发布 CRL。 ssl-crl-path 设置告诉每个编译大师在哪里可以找到它。


不过,我倾向于认为缩放文档有点乱。除了 ssl-crl-path 可能的例外,我希望步骤 #2 中描述的参数的默认值是合适的,前提是您在尝试之前遵循所有 other 步骤在您尝试配置的编译服务器上启动 puppetserver 服务。最后两个步骤将要求 puppetserver 已经在 CA 机器上 运行,并且可以通过所有相关的防火墙访问;如果不是这种情况,那么它可能会解释您报告的错误。如果您之前启动组件的顺序不正确,另请注意步骤 4 末尾的注释。

如果通过步骤4-6获得所需的主机证书后puppetserver仍然没有启动,那么您可能需要手动将CA服务器的证书复制到编译服务器,并设置ssl-ca-cert 属性 到它的位置。如果您根据指定的程序获得了主机证书,我仍然怀疑您是否需要显式设置 ssl-certssl-key

我成功了。关于 webserver.conf 设置,我使用了以下内容:

ssl-cert: "/etc/puppetlabs/puppet/ssl/certs/<server FQDN>.pem"
ssl-key: "/etc/puppetlabs/puppet/ssl/private_keys/<server FQDN>.pem"
ssl-ca-cert: "/etc/puppetlabs/puppet/ssl/certs/ca.pem"
ssl-crl-path: "/etc/puppetlabs/puppet/ssl/crl.pem"

不幸的是,我在尝试启动 puppetserver 时仍然收到 CAService 错误。结果证明这是一个简单的错误。在 /etc/puppetlabs/puppetserver/services.d/ca.cfg 中,我正确地注释掉了以下行:

#puppetlabs.services.ca.certificate-authority-service/certificate-authority-service

但我错过了取消注释以下行:

puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service

该行取消注释后,puppetserver 启动,我的测试代理能够从中央 CA 获得签名证书并成功从编译主机获得配置。