web-dev-qa-db-ja.com

PuppetDB:接続が拒否されました

PuppetDBを私のpuppetmasterマシンで実行しようとしています。問題は、エージェントの実行時に常に次のメッセージが表示されることです。

err: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to submit 'replace facts' command for handsoff.dc0.testing.de to PuppetDB at handsoff:8081: Connection refused - connect(2)

Puppetmaster、puppetdb、およびデータベースは、すべて同じホスト「handsoff」で実行されています。

これは私の/etc/puppet/puppetdb.confです

[main]
server = handsoff
port = 8081

私の/etc/puppetdb/jetty.ini

[jetty]
# Hostname or IP address to listen for clear-text HTTP.  Default is localhost
# Host = <Host>

# Port to listen on for clear-text HTTP.
port = 8080


# The following are SSL specific settings. They can be configured
# automatically with the tool `puppetdb ssl-setup`, which is normally
# ran during package installation.

# The Host or IP address to listen on for HTTPS connections
ssl-Host = localhost

# The port to listen on for HTTPS connections
ssl-port = 8081

# Private key path
ssl-key = /etc/puppetdb/ssl/private.pem

# Public certificate path
ssl-cert = /etc/puppetdb/ssl/public.pem

# Certificate authority path
ssl-ca-cert = /etc/puppetdb/ssl/ca.pem

certificate-whitelist = /etc/puppetdb/ssl-whitelist

そして、ssl-whitelistファイル:

localhost
handsoff
handsoff.dc0.testing.de

lsofはリスニングポートを表示します

# lsof -i -P | grep puppetdb | grep 80
Java     2549      puppetdb   20u  IPv6   4982      0t0  TCP localhost:8080 (LISTEN)
Java     2549      puppetdb   34u  IPv6   9353      0t0  TCP localhost:8081 (LISTEN)

/ etc/hostsには次の行があります

127.0.0.1   localhost
127.0.1.1   handsoff handsoff.dc0.testing.de

したがって、私の観点から、puppetはlocalhostとhandsoffを介してポート8081のpuppetdbに接続できるはずです。 (私は両方をテストしましたが、どちらも同じ結果が得られました)

この設定で何が問題になっているのでしょうか?

編集puppetdb.confにも設定しようとしました:

[main]
server = localhost
port = 8081

しかし、私はerr: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to submit 'replace facts' command for handsoff.dc0.testing.de to PuppetDB at localhost:8081: hostname does not match the server certificateを取得します

私は自己署名証明書を使用しています(apt-getを使用してインストールした後は、何も変更しませんでした)。私の推測では、ホワイトリストに登録すると、この方法で証明書を使用できるようになります。それは間違っていますか?

3
Kai

確認してください hostname -fは完全修飾名を提供します(そうでない場合は、更新/etc/hostnameおよび更新sysctl kernel.hostname={your hostname})。

現在の証明書を確認します。

echo | openssl s_client -connect <puppetdb fqdn>:8081 | openssl x509 -noout -dates

最新バージョンのPuppetDB(4.2)の場合:

  1. puppetDBを停止するservice puppetdb stop
  2. 古い証明書を削除:rm -rf /etc/puppetlabs/puppetdb/ssl/
  3. 新しい証明書を生成するには、puppet DBに便利なツールが付属しています:puppetdb ssl-setup
  4. dBへのSSL接続を使用している場合は、キーストアを更新する必要がある場合があります。

    keytool -import -alias "My CA" -file /etc/puppetlabs/puppetdb/ssl/ca.pem -keystore /etc/puppetlabs/puppetdb/ssl/truststore.jks 
    
  5. puppetDBを開始するservice puppetdb start
1
Tombart