web-dev-qa-db-ja.com

Puppetは証明書に署名しません

Puppetのテストラボを作成しましたが、機能しません。私が開始 puppet agentノード上で、証明書を待ちます。

root:~# puppet agent --server xxxx --waitforcert 60 --test
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session

サーバー上で、保留中の証明書要求が見つかりました。

root:~# puppet cert --list                                                                                                        
root:~#

Masterhttpdログ:

root:~# tail /var/log/puppet/masterhttp.log
[2012-01-06 09:19:17] xxx - - [06/Jan/2012:09:19:17 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:17] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw
[2012-01-06 09:19:47] xxx - - [06/Jan/2012:09:19:47 CET] "GET /production/certificate/xx HTTP/1.1" 404 30
[2012-01-06 09:19:47] - -> /production/certificate/pgw

証明書ファイルが見つかりません。

5
Dennis Wisnia

エージェントがマスターに到達していることを確認したようです。良い第一歩。

次に、他の人が示唆しているように、証明書が署名されていないこと、および証明書を見逃していないことを確認します。

Sudo puppet cert --list --all

そこに表示されない場合は、すべてをクリーンアップして最初からやり直します。

まず、両方のサーバーの日付と時刻が同期していることを確認します。ディストリビューションとNTPクライアントに応じて、ntpd -q -gのようなものとNTP同期を強制することができます。

次に、パペットマスターでcleanを実行します。

Sudo puppet cert clean <agent hostname>

エージェントで、すべてのSSLファイルをクリーンアップします。

Sudo rm -rf /var/puppet/ssl /var/lib/puppet/ssl/ /var/puppet/ssl 

最後に、テストを実行します。

Sudo puppet agent --debug --test --server <master hostname>

うまくいけば、これで問題が解決しない場合は、どこを見ればよいかについての手がかりが得られるはずです。

1

人形エージェントを次のように開始することをお勧めします

$ puppet agent --server=xxxx --test --debug

このコマンドは、失敗する理由の詳細を提供します。また、完了するまでにさらに時間がかかる場合があります。

証明書があれば、サイドから削除することもできます(それぞれマスターとエージェントで)

puppet --cert --clean your_machine_name

rm -rf /etc/puppet/ssl
1
Khaled

Puppetを始めたとき、私は非常によく似た問題に遭遇しました。 --serverオプションは尊重されていませんでした。

'puppet'という名前とマスターボックスのIPを使用してHOSTSファイルにエントリを追加してみてください。

それが機能する場合、次の構文が適切に機能します(少なくともバージョン2.7.5では)

[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
server = puppetmaster.yourdomain.org
pluginsync = true

[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = puppetmaster.yourdomain.org
listen = true
1
Tim Brigham