Ошибки выполнения агента Puppet с сообщением Не удалось выполнить: уровень стека слишком глубокий

Вопрос или проблема

Я настроил 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, что, в конечном итоге, вызывает ошибку уровня стека.

Рекомендации по исправлению

  1. Добавьте настройку 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.

  2. Проверка работоспособности CA. Убедитесь, что внешний CA доступен и работает. Если он недоступен, это также может вызвать проблему со связью, что приведёт к ошибкам при работе с Puppet Agent.

  3. Запуск Puppet Agent с дополнительными параметрами. Во избежание проблем с сетевыми настройками, попробуйте запускать puppet agent --test --debug, чтобы проверить более подробные сообщения. Часто они указывают на точную причину проблемы.

  4. Обновление документации: Ознакомьтесь с актуальными руководствами по Puppet и их настройкам, чтобы убедиться, что ваша конфигурация соответствует последним требованиям и стандартам. Рекомендуется обратиться к документации Puppet.

Заключение

Ошибка "stack level too deep" часто указывает на проблемы с конфигурацией или обращением к CA. Обеспечив правильную настройку ca_server и другие параметры, вы сможете избежать бесконечных циклов обращения и стабилизировать работу вашего Puppet Agent. Убедитесь, что ваш внешний CA доступен и правильно настроен, что является ключом к успешному взаимодействию между Puppet Agent и Server.

Следуя указанным рекомендациям и внося нужные изменения в конфигурацию, вы сможете устранить данную ошибку и наладить корректное управление вашими сертификатами в Puppet.

Оцените материал
Добавить комментарий

Капча загружается...