Я настроил Puppet Server на использование внешнего центра сертификации и создал необходимые ключи.
Мой puppet.conf выглядит следующим образом:
[master]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code
ca = false
cacert = /etc/puppet/ssl/certs/bubbleshadow-ca-cert.pem
hostcert = /etc/puppet/ssl/certs/bubbleshadow-server-cert.pem
hostprivkey = /etc/puppet/ssl/private_keys/bubbleshadow-server-key.pem
ssl_client_ca_auth = /etc/puppet/ssl/certs/bubbleshadow-ca-cert.pem
[agent]
server = puppet.bubbleshadow.net
hostcert = /etc/puppet/ssl/certs/bubbleshadow-agent-cert.pem
hostprivkey = /etc/puppet/ssl/private_keys/bubbleshadow-agent-key.pem
localcacert = /etc/puppet/ssl/certs/bubbleshadow-ca-cert.pem
certificate_revocation = false
Однако когда я пытаюсь бежать puppet agent --test --debug
(на том же узле, что и сервер) я получаю следующий вывод:
Отладка: использование кэшированного сертификата для CA
Отладка: не удалось найти динамически привязанный сервер, откат к настройке ca_server
Отладка: не удалось найти порт с динамической привязкой; возврат к настройке ca_port
Это продолжается до тех пор, пока, наконец, не появится ошибка:
Ошибка: не удалось запустить: слишком глубокий уровень стека
Я не понимаю, почему он пытается что-то сделать с CA, поскольку сертификат уже подписан вручную с помощью openssl.
Если вы хотите, чтобы марионетка использовала внешний ЦС (например, при запуске нескольких мастеров марионетки), вам необходимо включить ca server
заявление в вашем puppet.conf.
Это должно указывать на марионетку сервера, с которой предполагается связаться для служб CA. Кажется, что ваша конфигурация не включает его.
https://docs.puppet.com/guides/scaling_multiple_masters.html#centralize-the-certificate-authority есть полезная информация по этому поводу.