Назад | Перейти на главную страницу

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-белого списка:

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

Итак, с моей точки зрения, марионетка должна иметь возможность подключаться к puppetdb на порту 8081 через localhost и через хэндовер. (Я тестировал оба, оба с одинаковыми результатами)

Есть идеи, что может быть не так с этой настройкой?

редактировать: Я тоже пытался установить это в своем 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). Я предполагал, что белый список позволит мне использовать сертификат таким образом. Это не так?

Удостовериться 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. если вы используете 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