web-dev-qa-db-ja.com

PuppetDB:「ファクトの置換」コマンドの送信に失敗しました

最近、Puppetエージェントの証明書を取り消し/クリーンアップしましたが、これはPuppetDBに悪影響を及ぼしているようです。バグが こちら で報告されており、問題の修正方法が記載されています。ユーザーに同様の問題 こちら がありましたが、これは私にとってはうまくいきません。

サーバーはCentOS 6.2、Puppet 2.7.13、およびPuppet DB 0.9を実行しています。エラーは:

root@harp:/etc/puppetdb/ssl> puppet agent --test
err: Cached facts for harp failed: Failed to find facts from PuppetDB at harp.mydomain.com:8081: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed.  This is often because the time is out of sync on the server or client
info: Loading facts in /etc/puppet/modules/dns/lib/facter/datacenter.rb
info: Caching facts for harp
err: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed.  This is often because the time is out of sync on the server or client
err: Could not run Puppet configuration client: Could not retrieve local facts: Failed to submit 'replace facts' command for harp to PuppetDB at harp.mydomain.com:8081: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed.  This is often because the time is out of sync on the server or client

NTPは私が見ているものから正しく機能しており、日時は適切に見えます。 「ハープ」は実際にはパペットマスターサーバーであるため、エージェントとサーバー間の時間に問題はありません。両者が同じであるためです。

古い証明書:

root@harp:/etc/puppetdb/ssl> puppet cert list --all
+ harp  (DF:8F:65:36:58:4C:DE:66:2B:65:D1:E6:18:B7:F2:33)

エージェントの新しい証明書をクリーンアップして生成します。

root@harp:/etc/puppetdb/ssl> puppet cert clean harp
notice: Revoked certificate with serial 18
notice: Removing file Puppet::SSL::Certificate harp at '/var/lib/puppet/ssl/ca/signed/harp.pem'
notice: Removing file Puppet::SSL::Certificate harp at '/var/lib/puppet/ssl/certs/harp.pem'
notice: Removing file Puppet::SSL::CertificateRequest harp at '/var/lib/puppet/ssl/certificate_requests/harp.pem'
notice: Removing file Puppet::SSL::Key harp at '/var/lib/puppet/ssl/private_keys/harp.pem'

root@harp:/etc/puppetdb/ssl> puppet agent --test
info: Creating a new SSL key for harp
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
info: Creating a new SSL certificate request for harp
info: Certificate Request fingerprint (md5): 72:5E:99:6A:DE:B0:76:BD:1A:7D:FD:DC:A9:E8:71:AD
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
Exiting; no certificate found and waitforcert is disabled

root@harp:/etc/puppetdb/ssl> puppet cert list
  harp (72:5E:99:6A:DE:B0:76:BD:1A:7D:FD:DC:A9:E8:71:AD)

root@harp:/etc/puppetdb/ssl> puppet cert sign harp
notice: Signed certificate request for harp
notice: Removing file Puppet::SSL::CertificateRequest harp at '/var/lib/puppet/ssl/ca/requests/harp.pem'

root@harp:/etc/puppetdb/ssl> puppet cert list --all
+ harp  (4A:D4:90:87:15:1B:D3:FD:A8:15:D9:C0:FB:08:5C:79)

root@harp:/etc/puppetdb/ssl> service puppetdb restart
Stopping puppetdb: /etc/init.d/puppetdb: line 77: kill: (8623) - No such process
                                                           [FAILED]
Starting puppetdb:                                         [  OK  ]

OK、その後、適切な方法で再起動します。

root@harp:/etc/puppetdb/ssl> service puppetdb restart
Stopping puppetdb:                                         [  OK  ]
Starting puppetdb:                                         [  OK  ]

SSL構成スクリプトを実行します

root@harp:/etc/puppetdb/ssl> /usr/sbin/puppetdb-ssl-setup
cp: cannot stat `/var/lib/puppet/ssl/certs/harp.pem': No such file or directory

root@harp:/etc/puppetdb/ssl> ls -la /var/lib/puppet/ssl/certs
total 12
drwxr-xr-x 2 puppet root 4096 Jun 19 07:19 ./
drwxrwx--x 8 puppet root 4096 Apr 24 10:04 ../
-rw-r--r-- 1 puppet root 1854 Apr 24 10:04 ca.pem

OK、それから良い測定のためにもう一度試してください:

root@harp:/etc/puppetdb/ssl> /usr/sbin/puppetdb-ssl-setup
Certificate was added to keystore
Usage: pkcs12 [options]
where options are
-export       output PKCS12 file
-chain        add certificate chain
-inkey file   private key if not infile
-certfile f   add all certs in f
-CApath arg   - PEM format directory of CA's
-CAfile arg   - PEM format file of CA's
-name "name"  use name as friendly name
-caname "nm"  use nm as CA friendly name (can be used more than once).
-in  infile   input filename
...snip...
-CSP name     Microsoft CSP name
-LMK          Add local machine keyset attribute to private key

/ etc/puppetdb/sslのキーストアが変更/再生成されたようには見えません。この時点で、puppet agent --testでも同じエラーが発生し、puppetとpuppetdbを再起動しても効果がありません。

キーストア情報:

root@harp:/etc/puppetdb/ssl> keytool -list -keystore /etc/puppetdb/ssl/keystore.jks
Enter keystore password:

Keystore type: JKS
Keystore provider: Sun

Your keystore contains 1 entry

harp.mydomain.com, May 25, 2012, PrivateKeyEntry,
Certificate fingerprint (MD5): 06:A8:D3:2A:70:F3:6D:34:62:91:45:22:8A:C4:A8:86
root@harp:/etc/puppetdb/ssl> keytool -list -keystore /etc/puppetdb/ssl/truststore.jks
Enter keystore password:

Keystore type: JKS
Keystore provider: Sun

Your keystore contains 1 entry

puppetdb ca, May 25, 2012, trustedCertEntry,
Certificate fingerprint (MD5): 13:AD:D8:BC:42:40:47:BB:D2:5C:ED:3C:D1:78:26:88
root@harp:/etc/puppetdb/ssl> puppet cert --fingerprint ca harp.mydomain.com
ca 13:AD:D8:BC:42:40:47:BB:D2:5C:ED:3C:D1:78:26:88
err: Could not call fingerprint: Could not find a certificate or csr for harp.mydomain.com

root@harp:/etc/puppetdb/ssl> puppet cert --fingerprint ca harp
ca 13:AD:D8:BC:42:40:47:BB:D2:5C:ED:3C:D1:78:26:88
harp 4A:D4:90:87:15:1B:D3:FD:A8:15:D9:C0:FB:08:5C:79

Puppetdbキーストアを実際に再生成するにはどうすればよいですか?/etc/puppetdb/ssl /のファイルを削除しようとしましたが、うまくいきませんでした。

6
Banjer

うまくいきましたが、必要な手順が正確に言えません。

この問題は、いくつかのホストでの認証が遅いかハングしているために始まり、ドメインコントローラー/ DNSキャッシュの問題に関連しているようです。パペットマスターとエージェントのdomain mydomain.comから/etc/resolv.confエントリを削除すると問題が解決しましたが、既存のパペット証明書に問題が発生しました。私はマスターでpuppet cert clean --allを実行してすべての証明書を再作成しようとしましたが、これはPuppetDBではうまく機能しませんでした。

ソリューション

マスターの古い証明書を一掃します。

puppet cert clean --all

すべてのエージェントの古い証明書を一掃します。

rm -rf /var/lib/puppet/ssl

PuppetDBキーストアを再作成します。

facter fqdnは、domain foo.com/etc/resolv.confから削除すると使用できなくなります。これにより、puppetdb-ssl-setupが警告なしに失敗します。

/usr/sbin/puppetdb-ssl-setupを編集し、facter hostnameが空の場合はfacter fqdnのみを使用するコードを追加します。

# near line 10
fqdn=`facter fqdn`
# add this "if" section
if [ ! -n "$fqdn" ] ; then
  fqdn=`facter hostname`
fi

権限の修正:

chown -R puppetdb:puppetdb /etc/puppetdb/ssl

/etc/puppetdb/conf.d/jetty.iniのパスワードを新しいkeystore/truststoreパスコード(同じパス)で更新します。

cat /etc/puppetdb/ssl/puppetdb_keystore_pw.txt

Puppetdbを再起動します

service puppetdb restart

次に、各エージェントに移動して、新しい証明書を要求し、マスターでそれぞれに署名します。

4
Banjer

これは、puppetdbのメモリ設定が低すぎる場合にも発生します。

vim /etc/default/puppetdb

行を編集

Java_ARGS="-Xmx192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetdb/puppetdb-oom.hprof -Djava.security.egd=file:/dev/urandom"

なるはず

Java_ARGS="-Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/puppetdb/puppetdb-oom.hprof -Djava.security.egd=file:/dev/urandom"

そしてpuppetdbを再起動します

Sudo service puppetdb restart
1
edlerd

パペットマスター(puppetdbを1.6.3から2.3.8に含む)を3.7.xから3.8.xにアップグレードした後、同様の問題が発生し、次のエラーメッセージが表示されました。

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to submit 'replace facts' command for puppet-client to PuppetDB at puppetmaster:8081: Connection refused - connect(2)

これに対する解決策は、一方ではpuppetdbを再起動することであり、もう一方ではpuppetエージェントクライアントを再起動することでもありました。その後、エージェントは作業を続けることができました。

0
Michael Aicher

同様の問題がありました。解決:

1.)マスターでpe-puppetdb pidファイルを削除します。2.)マスターでpe-puppetdbサービスを停止します。3.)マスターでpe-puppetdbサービスを開始します。30秒待ちます。

0
CMag