![Puppet が Foreman にファクトを送信できない - 「tlsv1 アラート 不明 ca」](https://rvso.com/image/658743/Puppet%20%E3%81%8C%20Foreman%20%E3%81%AB%E3%83%95%E3%82%A1%E3%82%AF%E3%83%88%E3%82%92%E9%80%81%E4%BF%A1%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%20-%20%E3%80%8Ctlsv1%20%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88%20%E4%B8%8D%E6%98%8E%20ca%E3%80%8D.png)
最近更新しましたカテッロに2.2そしてフォアマン今から1.8.1そのため、アップグレードのどこかで Puppet が Foreman に接続できなくなったようです。
> [root@virt5 ~]# puppet agent --test info:
> Retrieving plugin <snipped>
> err: Could not retrieve catalog from remote server: Error 400 on
> SERVER: Failed when searching for node virt5: Failed to find virt5.
> via exec: Execution of '/etc/puppet/node.rb virt5' returned 1:
> warning: Not using cache on failed catalog err: Could not retrieve
> catalog; skipping run
同じコマンドを puppetmaster で実行すると、次のように表示されます。
[root@foreman certs]# /etc/puppet/node.rb virt5
Foreman にファクトを送信できませんでした: SSL_connect が返されました = 1 errno = 0 状態 = SSLv3 サーバー セッション チケット A を読み取りました: tlsv1 アラート不明 ca
私はコピーしようとしました/etc/pki/katello/certs/katello-default-ca.crthttpdが使用する証明書/etc/pki/ca-trust/source/anchors/を実行しましたupdate-ca-trust extract
が、違いはなかったようです。
何かおかしなことを見逃しているに違いないのですが、それが何なのかよく分かりません。
答え1
ここで私が見つけた間違いの 1 つは (ドキュメントではより明確にすべきですが)、Katello が Foreman のように Puppet 証明書を使用すると考えていることですが、実際はそうではありません。
Foreman/Katello ホストで以下を実行します:
capsule-certs-generate --capsule-fqdn "mycapsule.example.com"\
--certs-tar "~/mycapsule.example.com-certs.tar"
ここで、mycapsule.example.com は他の Puppet マスターです。
そのtarballを解凍し、「puppet-client」証明書RPMをPuppetマスターにコピーしてインストールします。
いくつかのファイルをコピーします:
cp /etc/pki/katello-certs-tools/certs/*-puppet-client.crt /etc/puppet/foreman.crt
cp /etc/pki/katello-certs-tools/private/*-puppet-client.key /etc/puppet/foreman.key
cd /etc/puppet
wget https://katello.mydomain.net/pub/katello-default-ca.crt
chown puppet /etc/puppet/foreman.{crt,key} /etc/puppet/katello*
/etc/puppet/foreman.yaml を次のように設定します。
:url: "https://katello.mydomain.net"
:ssl_ca: "/etc/puppet/katello-default-ca.crt"
:ssl_cert: "/etc/puppet/foreman.crt"
:ssl_key: "/etc/puppet/foreman.key"
それでうまくいくはずです。