仮想マシンでパペットマスターを実行し、仮想マシンのホストでポート転送を介してクライアントマシンから接続しようとしています。
詳細
私はPuppet3.1.1でUbuntoを実行している仮想マシンを持っています(mgtと呼ばれます)。仮想マシンのホスト(lokiと呼ばれる)はrinetdを実行し、ポート8140の着信接続を仮想マシンに転送します。
Puppet 3.0.2を搭載したクライアントマシン(thorと呼ばれる)があります。
Netcatとtelnetでテストすると、ポートフォワーディングが機能し、クライアントマシン(thor)からパペットマスター仮想マシン(mgt)に接続できることが確認されます。
次のコマンドを使用してパペットマスターを(mgtで)実行すると、正しく起動しているように見えます。
puppet master --no-daemonize --debug
次に、次のコマンドを使用して、エージェントを(thorで)実行します。
puppet agent --server loki --test --no-daemonize
次のエラーが発生します。
Warning: Unable to fetch my node definition, but the agent run will continue:
Warning: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: localhost]
Info: Retrieving plugin
Error: /File[/var/puppet/lib]: Failed to generate additional resources using 'eval_generate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: localhost]
Error: /File[/var/puppet/lib]: Could not evaluate: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: localhost] Could not retrieve file metadata for puppet://loki/plugins: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: localhost]
Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: localhost]
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Error: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [self signed certificate in certificate chain for /CN=Puppet CA: localhost]
しかし、接続が試行または拒否されたことを示す追加の出力がパペットマスターに表示されません。
私の理解では、操り人形マスターは、クライアントの証明書が署名されるまで接続を拒否する必要があります。コマンドを使用するとpuppet set listは署名されていない証明書をリストしません。
続行する方法について何か提案はありますか?
申し訳ありませんが、元のエラーを読み間違えました。マスター/エージェントが混乱しているようです。詳細については、 このリンク を参照してください。
具体的には:
Puppetが持っているサーバー証明書とpuppetmasterが使用しているサーバー証明書は異なります。純粋なパペットノードでの簡単な方法の1つは、現在のSSL情報を削除して、最初からやり直すことです。
/ var/lib/puppet -type f -print0 | xargs -0rrmを検索します
また、クライアントとサーバーが現在の時刻に同意していることを確認してください(そうでない場合、作成された証明書が他のマシンで有効でない可能性があります)。
次のリンクは、Puppet証明書がどのように機能するかを非常によく説明しています。