Вопрос или проблема
Я настроил 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
Это продолжается в цикле, пока в конце не возникает ошибка:
Ошибка: Не удалось выполнить: слишком глубокий уровень стека
Я не понимаю, почему он пытается что-то сделать с ЦА, так как сертификат уже был подписан вручную с помощью openssl.
Если вы хотите, чтобы puppet использовал внешнее ЦА (например, при запуске нескольких puppetmasters), вам нужно включить инструкцию ca server
в ваш puppet.conf.
Это должно указывать на сервер, с которым puppet должен связаться для получения услуг ЦА. Ваша конфигурация, похоже, этого не включает.
https://docs.puppet.com/guides/scaling_multiple_masters.html#centralize-the-certificate-authority содержит полезную информацию по этому вопросу.
Ответ или решение
Ошибка Puppet Agent: "Не удалось выполнить: уровень стека слишком глубокий"
Когда вы настраиваете Puppet Server для использования внешнего Центра Сертификации (CA), важно тщательно проверять конфигурацию, чтобы избежать ошибок, подобных "не удалось выполнить: уровень стека слишком глубокий". Давайте детально рассмотрим вашу конфигурацию и возможные пути решения данной проблемы.
Анализ вашей конфигурации
Согласно предоставленному вами файлу конфигурации puppet.conf
, у вас настроен Puppet Server с отключённым внутренним CA (ca = false
). Однако для корректной работы с внешним CA необходимо наличие директивы ca_server
, указывающей Puppet Agent, к какому серверу обращаться для выполнения операций, связанных с CA.
Важные компоненты конфигурации:
-
Параметр
ca
: установлен вfalse
, что указывает Puppet не использовать встроенный CA. Это подходит для случаев, когда вы работаете с внешним CA. -
SSL-сертификаты: пути к сертификатам и закрытым ключам указаны правильно, но отсутствие
ca_server
может привести к тому, что Puppet прикладывает много усилий для поиска информации о CA, что, в конечном итоге, вызывает ошибку уровня стека.
Рекомендации по исправлению
-
Добавьте настройку
ca_server
в конфигурацию. Это должно указывать на сервер, который вы хотите использовать в качестве CA. Например:[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 ca_server = ваш_ca_сервер
Убедитесь, что
ваш_ca_сервер
правильно указывает на URL или DNS-имя вашего CA. -
Проверка работоспособности CA. Убедитесь, что внешний CA доступен и работает. Если он недоступен, это также может вызвать проблему со связью, что приведёт к ошибкам при работе с Puppet Agent.
-
Запуск Puppet Agent с дополнительными параметрами. Во избежание проблем с сетевыми настройками, попробуйте запускать
puppet agent --test --debug
, чтобы проверить более подробные сообщения. Часто они указывают на точную причину проблемы. -
Обновление документации: Ознакомьтесь с актуальными руководствами по Puppet и их настройкам, чтобы убедиться, что ваша конфигурация соответствует последним требованиям и стандартам. Рекомендуется обратиться к документации Puppet.
Заключение
Ошибка "stack level too deep" часто указывает на проблемы с конфигурацией или обращением к CA. Обеспечив правильную настройку ca_server
и другие параметры, вы сможете избежать бесконечных циклов обращения и стабилизировать работу вашего Puppet Agent. Убедитесь, что ваш внешний CA доступен и правильно настроен, что является ключом к успешному взаимодействию между Puppet Agent и Server.
Следуя указанным рекомендациям и внося нужные изменения в конфигурацию, вы сможете устранить данную ошибку и наладить корректное управление вашими сертификатами в Puppet.