web-dev-qa-db-ja.com

複数の人形使い

追加のパペットマスターをセットアップしたいのですが、CAサーバーを1つのパペットマスターのみで処理します。私はここのドキュメントに従ってこれを設定しました:

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

2番目のパペットマスターを次のように構成しました。

[main]
...
ca = false
ca_server = puppet-master1.test.net

私はpassengerを使用しているので、virtual-Host.confファイルが2番目の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>

#SSLCertificateChainFile、#SSLCACertificateFile、#SSLCARevocationFileをコメントアウトしました。これはCAサーバーではないため、これが必要かどうかはわかりません。どうすれば乗客にこれらを操作させることができますか?

ドキュメントに従って構成したProxyPassMatchを使用したいと思います。すべてのpuppet.confファイルでcaサーバーを指定したくありません。

2番目のパペットマスターサーバー(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

人形のクライアントで私はこれを持っています

[main]

server = puppet-master2.test.net

私は何を逃しましたか?

乾杯、オリ

5
Oli

ドキュメントのこの部分。

ProxyPassMatch ^(/.*?)/(certificate.*?)/(.*)$ balancer://puppet_ca/
ProxyPassReverse ^(/.*?)/(certificate.*?)/(.*)$ balancer://puppet_ca/

..実際にはいくつかの点で間違っています。 ProxyPassReverseは正規表現を取得できず(とにかく必要ありません)、CAに送信されるリクエストでリクエストされたURLを実際に使用しておらず、証明書に関連しないAPIの意図しないプロキシをトリガーする可能性があります名前にcertificateが含まれるノードを呼び出します。

代わりに、これを使用してください:

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

<VirtualHost>ブロック内に配置すると、<Proxy balancer://puppet_ca>を取り除くことができます。

表示されるエラーは、証明書を取得しようとしたときに証明書以外のものが返されることを意味します。これは、上記の構成の問題が原因である可能性がありますが、別のエラーを示している可能性もあります。その構成を変更し、クライアントで/var/lib/puppet/sslを吹き飛ばして(証明書要求も失敗した可能性があるため)、機能しているかどうかを確認します。機能していない場合は、実行に--verboseを追加すると、何が表示されるかがわかります。起こっています。

4
Shane Madden

いいえ。

これをしないでください。あなたが複数のマスターを持つことによって人形をスケーリングしようとしているなら、あなたはそれについて間違った方向に進んでいます。 puppetlabsが、MM puppetの推奨方法を示すリンクしたドキュメントを作成したことはよく知っていますが、実際にはマスターレスにする方がはるかに簡単です。

したがって、puppetをスケーリングする最良の方法 行くことですmasterless 、中央のgit(または他のDVCS)リポジトリがあり、マニフェストのコピーを複製して実行しますそれらをローカルでpuppet apply

7
Tom O'Connor