多个傀儡师

Oli*_*Oli 5 puppet puppetmaster

我想设置一个额外的 puppet master,但只有 1 个 puppet master 处理 CA 服务器。我已经按照此处的文档进行了设置:

http://docs.puppetlabs.com/guides/scaling_multiple_masters.html

我已经配置了我的第二个傀儡大师如下:

[main]
...
ca = false
ca_server = puppet-master1.test.net
Run Code Online (Sandbox Code Playgroud)

我正在使用乘客,所以我有点困惑 virtual-host.conf 文件应该如何查找我的第二个 puppet-master2.test.net。这是我的(根据 Shane Maddens 的回答更新):

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18
PassengerRuby /usr/bin/ruby

Listen 8140

<VirtualHost *:8140>

    ProxyPassMatch ^/([^/]+/certificate.*)$ https://puppet-master1.test.net:8140/$1

    SSLEngine on
    SSLProtocol -ALL +SSLv3 +TLSv1
    SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP

    SSLCertificateFile      /var/lib/puppet/ssl/certs/puppet-master2.test.net.pem
    SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/puppet-master2.test.net.pem
    #SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
    #SSLCACertificateFile    /var/lib/puppet/ssl/ca/ca_crt.pem
    # If Apache complains about invalid signatures on the CRL, you can try disabling
    # CRL checking by commenting the next line, but this is not recommended.
    #SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem
    SSLVerifyClient optional
    SSLVerifyDepth  1
    # The `ExportCertData` option is needed for agent certificate expiration warnings
    SSLOptions +StdEnvVars +ExportCertData

    # This header needs to be set if using a loadbalancer or proxy
    RequestHeader unset X-Forwarded-For

    RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
    RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
    RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

    DocumentRoot /etc/puppet/rack/public/
    RackBaseURI /
    <Directory /etc/puppet/rack/>
            Options None
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我已经注释掉了 #SSLCertificateChainFile、#SSLCACertificateFile 和 #SSLCARevocationFile - 这不是 CA 服务器,所以不确定我是否需要它。我如何让乘客使用这些?

我想使用我根据文档配置的 ProxyPassMatch。我不想在每个 puppet.conf 文件中指定一个 ca 服务器。

尝试从指向第二个人偶主服务器 (puppet-master2.test.net) 的人偶客户端创建证书时出现此错误:

[root@puppet-client2 ~]# puppet agent --test
Error: Could not request certificate: Could not intern from s: nested asn1 error
Exiting; failed to retrieve certificate and waitforcert is disabled
Run Code Online (Sandbox Code Playgroud)

在傀儡客户端上,我有这个

[main]

server = puppet-master2.test.net
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

干杯,奥利

Tom*_*nor 7

不。

不要这样做。如果您希望通过拥有多个 master 来缩放 puppet,那么您就走错了路。我很清楚 puppetlabs 已经制作了一份您链接的文档,说明了他们如何推荐做 MM puppet,但实际上无大师要容易得多。

因此,扩展 puppet 的最佳方法是使用 masterless,在那里您拥有一个中央 git(或其他 DVCS)存储库,然后克隆一份清单副本,并使用puppet apply.


Sha*_*den 4

这部分文档..

ProxyPassMatch ^(/.*?)/(certificate.*?)/(.*)$ balancer://puppet_ca/
ProxyPassReverse ^(/.*?)/(certificate.*?)/(.*)$ balancer://puppet_ca/
Run Code Online (Sandbox Code Playgroud)

..实际上在几个方面都是错误的。 ProxyPassReverse不能采用正则表达式(并且无论如何也不需要),它实际上并没有在发送到 CA 的请求中使用所请求的 URL,并且它可能会触发对具有以下属性的节点的非证书相关 API 调用的无意代理:certificate以它的名义。

相反,使用这个:

ProxyPassMatch ^/([^/]+/certificate.*)$ https://puppet-master1.test.net:8140/$1
Run Code Online (Sandbox Code Playgroud)

把它放在你的<VirtualHost>块里,你就可以摆脱<Proxy balancer://puppet_ca>.

您收到的错误意味着您在尝试检索证书时收到了除证书之外的其他内容 - 这可能是由上述配置问题引起的,但也可能表示不同的错误。更改该配置,/var/lib/puppet/ssl在客户端上删除您的配置(因为证书请求也可能失败)并查看它是否正常工作 - 如果不正常,请添加--verbose到运行中,我们将看到发生了什么。