オンラインで検索したところ、他の数人が他のリスト/ボードでこの問題を抱えていることがわかりました。 Sudo puppetd --waitforcert 60 --testをマスターサーバーで証明書に署名した後、2回目に実行すると、このエラーが発生します-
notice: Got signed certificate
warning: Certificate validation failed; considering using the certname configuration option
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources during transaction: Certificates were not trusted: hostname was not match with the server certificate
何が問題なのか、どのように修正するのか理解できません。だから私は尋ねる理由です。
LAN上の2つのサーバーにパペットを設定しています。 puppetmasterは「puppet」、他のサーバーは「puppetclient」という名前です。私はpuppetclientの/ etc/hostsにパペットを入れました。
hostname -fを実行すると、それぞれのサーバー上のpuppetとpupperclientが表示されます。他に何を試したらよいかわかりません。誰か洞察力がありますか?
ホストが「パペット」以外の名前が付けられたときに、パペットマスター証明書が作成されたようです。証明書を再作成すれば、問題ないはずです。
証明書に格納されている名前は、クライアントが接続するように(正確に)構成した名前と一致する必要があります。たとえば、「puppet.domain.com」に接続するようにクライアントを設定した場合、証明書の名前が「puppet」の場合はエラーが発生し、その逆の場合も同様です。
PuppetmasterにDNS CNAMEを使用する場合は、次を使用してpuppetmasterを起動できます。
puppetmaster --certname cname.domain.org
これにより、操り人形マスターはcname.domain.org
デフォルトの完全修飾ドメイン名の代わりに。
--certname cname.domain.org
フラグオプションは私のためにトリックを実行したようです(Amazon EC2)
指定されたクライアントとサーバーにPuppetをインストールする前に、/ etc/resolv.confファイルを確認し、「検索」行の最初のドメインエントリがPuppetを実行するドメインであることを確認します。例えば:
検索my.puppetdomain.com my.public.domain.com
ネームサーバー192.168.1.1ネームサーバーxxx.xxx.1.1
Puppetのインストール段階では、Puppetサーバーは/etc/resolv.confの最初の検索エントリに基づいて証明書を生成します。私はこれを難しい方法で見つけました。 Puppetノードで証明書関連のエラーが発生した場合は、次の手順を実行します。
1)/etc/resolv.confを編集し、「search」行にリストされている最初のドメインが、Puppetを実行するドメインを反映していることを確認します。
2)puppetをアンインストールします(/ etc/puppetディレクトリはそのままにしておきます)。
3)rm -rf/var/lib/puppet
4)Puppetを再インストールします(これにより、新しい/ var/lib/puppetディレクトリが生成されます)。
5)Puppetサーバーでこれを実行する場合は、/ usr/sbin/puppetmasterd --mkusersを実行します(または、/ usr/local/sbin/puppetmasterd --mkusersを実行します)。 。これにより、適切なドメイン名を使用した新しい内部証明書を含め、/ var/lib/puppet内に必要なすべてのファイルが生成されます。
6)Puppetクライアントでこれを実行する場合は、-waitforcertフラグを有効にして、Puppetを冗長モードで起動します。puppetd -server .puppetdomain.com --waitforcert 60 --testこの手順では、 Puppetサーバーへの証明書要求。
7)Puppetサーバーで、待機中の証明書をリストします。
puppetca --list
リクエストを行っているPuppetクライアントのホスト名が表示されます。
puppetclient1.puppetdomain.com
8)Puppetサーバーから、リストされたPuppetクライアントの証明書に署名します。
puppetca --sign puppetclient1.puppetdomain.com
その後、完了です。
HTH..。
あなたはfacter(facter fqdn)にホスト名が何であるかを尋ね、それがあなたが期待するものと一致しているかどうかを見ることができます。また、(デフォルトで)/ var/lib/puppet/ssl /を確認し、問題である可能性のある正しいホスト名がない場合は、証明書がどのように見えるかを確認します。 puppetはすべての通信をHTTPS経由で行うため、解像度とホストの命名にかなり敏感です。
PuppetとpuppetclientはどちらもDNSで解決されますか?そうでない場合は、/ etc/hostsファイルを編集して、IPとホスト名をマップできます。 IIRC、これはクライアントでのみ実行する必要があります。