web-dev-qa-db-ja.com

Puppet cert cleanが機能しない

だから、私は既存のサーバーを置き換えるために新しいサーバーを立ち上げています。簡単でしょう?古い証明書を取り消し、新しい証明書を作成してください。ここに私が行き詰まっているループがあります:

サーバー名、証明書のフィンガープリント、ドメインを編集しました。以下に示すサーバーは次のとおりです。

  • Slave1-問題があるマシンのパートナーになるマシン。詳細の1つを証明するために、以下でのみ言及しています。
  • Slave2-問題が発生しているマシン。
  • Master1-パペットマスター(明らかに)

新しいビルドについて

[root@slave2 ~]# puppet agent -t
Error: Could not request certificate: The certificate retrieved from the master does not match the agent's private key.
Certificate fingerprint: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:2F:F1
To fix this, remove the certificate from both the master and the agent and then start a puppet run, which will automatically regenerate a certficate.
On the master:
puppet cert clean slave2.example.com
On the agent:
  rm -f /var/lib/puppet/ssl/certs/slave2.example.com.pem
  puppet agent -t

Exiting; failed to retrieve certificate and waitforcert is disabled

これは、古い名前を使用する新しいサーバーであるため、予測可能で完全に予想されます。今マスターに:

[root@master1 ~]# puppet cert clean slave2.example.com
Notice: Revoked certificate with serial 154

削除される主要なファイルについては何もないことに注意してください。彼らがいないからです。証明:

[root@master1 ~]# ls /var/lib/puppet/ssl/ca/signed/slave1.example.com.pem
/var/lib/puppet/ssl/ca/signed/slave1.example.com.pem
[root@master1 ~]# ls /var/lib/puppet/ssl/ca/signed/slave2.example.com.pem
ls: cannot access /var/lib/puppet/ssl/ca/signed/slave2.example.com.pem: No such file or directory

わかりました。スレーブに戻って、.pemファイルを削除し、puppetエージェントを再度実行して、手順を完了します。

[root@slave2 ~]# rm -f /var/lib/puppet/ssl/certs/slave2.example.com.pem
[root@slave2 ~]# puppet agent -t
Info: Caching certificate for slave2.example.com
Error: Could not request certificate: The certificate retrieved from the master does not match the agent's private key.
Certificate fingerprint: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:2F:F1
To fix this, remove the certificate from both the master and the agent and then start a puppet run, which will automatically regenerate a certficate.
On the master:
  puppet cert clean slave2.example.com
On the agent:
  rm -f /var/lib/puppet/ssl/certs/slave2.example.com.pem
  puppet agent -t

Exiting; failed to retrieve certificate and waitforcert is disabled

...そして、結果に変化はなく、最初から戻ってきました。

最後の健全性チェック:

[root@master1 ~]# puppet cert list -a | grep -i slave2

...そして一致するものがありません。

何が悪いのですか?

補遺:

私はそれがマスターにあると信じる傾向がありますが、正確にどのようになっているかはわかりません。理由は次のとおりです。

[root@master1 ~]# puppet cert clean slave2.example.com
Notice: Revoked certificate with serial 154
[root@master1 ~]# puppet cert clean slave2.example.com
Notice: Revoked certificate with serial 154
[root@master1 ~]# puppet cert clean slave2.example.com
Notice: Revoked certificate with serial 154
[root@master1 ~]# puppet cert clean slave2.example.com
Notice: Revoked certificate with serial 154
[root@master1 ~]# puppet cert clean slave2.example.com
Notice: Revoked certificate with serial 154

証明書がなくなったため、初回以降は失敗しませんか?

3
Glenn Lasher

Redditorは、問題を解決したと思われる詳細な手順を提供しました。 3つの重要な点は次のとおりです。

  • 時計が同期していることを確認します(同期していた)
  • Puppetサービスが停止していることを確認します(停止していません)
  • マスターに対して明示的に定義されたターゲットを使用してPuppetエージェントを呼び出します。
puppet agent -t --server master1.example.com

物事のその組み合わせは、証明書の問題を乗り越えました。

1
Glenn Lasher

puppet caは廃止予定であり、機能しない可能性がありますが、お試しください:

puppet ca destroy slave2.example.com

また、/var/lib/puppet/ssl/ca/requestsでも、保留中の要求証明書のディレクトリは手動でpuppet cert list -aは何も表示していません。実際には、ls -lRa /var/lib/puppet/ssl/マスターで、念のため、slave2証明書を検索します。

0
Aditya Pednekar