追加のパペットマスターをセットアップしたいのですが、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
私は何を逃しましたか?
乾杯、オリ
ドキュメントのこの部分。
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
を追加すると、何が表示されるかがわかります。起こっています。
いいえ。
これをしないでください。あなたが複数のマスターを持つことによって人形をスケーリングしようとしているなら、あなたはそれについて間違った方向に進んでいます。 puppetlabsが、MM puppetの推奨方法を示すリンクしたドキュメントを作成したことはよく知っていますが、実際にはマスターレスにする方がはるかに簡単です。
したがって、puppetをスケーリングする最良の方法 行くことですmasterless 、中央のgit(または他のDVCS)リポジトリがあり、マニフェストのコピーを複製して実行しますそれらをローカルでpuppet apply
。