Вопрос или проблема
Я установил Puppet Agent на сервере CentOS 7. Я установил Puppet Master на другом сервере CentOS 7. Я использую бесплатную версию Puppet на обоих серверах. Сервер Puppet Agent запросил сертификат. Я подписал его на сервере Puppet Master. На любом из серверов нет программного межсетевого экрана. Между серверами нет межсетевого экрана. Я временно включил порт 8140 с помощью SSHD. Я использовал SSH, чтобы проверить, открыт ли порт 8140. Затем я вернул SSHD, чтобы он слушал только на порту 22. Порт 8140 не был заблокирован. nslookup для IP-адресов и ping против доменных имен показывает, что у обоих серверов есть правильная сетевая информация о другом сервере. Это новые серверы. Puppet никогда не работал на них ранее. Я создал простой манифест. Я применил его локально на сервере Puppet Master. Это сработало без ошибок. Затем я попытался применить его на сервере Puppet Agent. Это не сработало.
С сервера Puppet Master я выполнил следующее:
puppet agent neat.pp –server hostNameOfPuppetAgentServer –verbose
После того, как я нажал Enter, на сервере Puppet Master не было ошибок. Не было вообще никакого вывода. Это не создало никаких логов на сервере Puppet Agent. Не было никаких доказательств того, что это сработало на сервере Puppet Agent. Я проверил, и эффекты не были выполнены.
На сервере Puppet Master я выполнил следующее:
puppet agent –server hostNameOfPuppetAgentServer –test
Результаты включали “Connection refused — connect (2).” Что не так? Я ожидаю, что манифест будет работать на узле Puppet Agent.
На вашем клиенте Puppet отредактируйте секцию puppet.conf [main]
, добавив server = <puppet_server_name>
.
И попробуйте запустить puppet agent -t
.
Ответ или решение
Для успешного применения манифеста с сервера Puppet Master на узел Puppet Agent, необходимо учитывать несколько ключевых моментов и следовать установленным процедурам. Давайте рассмотрим по шагам, что необходимо сделать для устранения вашей проблемы и успешного применения конфигурации.
Подготовка к работе с Puppet
-
Конфигурация файлов:
Убедитесь, что на сервере Puppet Agent правильно настроен файл конфигурацииpuppet.conf
. Откройте файл/etc/puppetlabs/puppet/puppet.conf
и убедитесь, что в разделе[main]
указано имя вашего Puppet Master, как показано ниже:[main] server = <имя_или_IP_адрес_Puppet_Master>
-
Убедитесь в наличии сертификата:
Так как вы уже подписали сертификат на сервере Puppet Master, убедитесь, что у Puppet Agent установлено соответствующее доверие к сертификату. На сервере Puppet Agent выполните команду:puppet agent --test
Это должно инициировать связь с Puppet Master и получить конфигурации для применения.
-
Проверка состояния сети:
Убедитесь, что сервер Puppet Agent может подключиться к Puppet Master по порту 8140. Для этого выполните следующую команду:telnet <имя_или_IP_адрес_Puppet_Master> 8140
Если соединение не устанавливается, это может указывать на проблемы с сетью. Проверьте настройки сети и убедитесь, что все необходимые порты открыты.
-
Логи:
Проверьте журналы на обеих машинах. Лог-файлы Puppet находятся по следующим путям:- На Puppet Master:
/var/log/puppetlabs/puppetserver/puppetserver.log
- На Puppet Agent:
/var/log/puppetlabs/puppet/puppet.log
Ошибки или предупреждения в этих файлах могут дать ключ к пониманию, что пошло не так.
- На Puppet Master:
Применение манифеста
-
Создание и хранение манифеста:
Убедитесь, что ваш манифест сохранен в правильном каталоге на сервере Puppet Master, обычно это/etc/puppetlabs/code/environments/production/manifests/
. Например, файлneat.pp
должен быть в этом каталоге. -
Применение манифеста:
Чтобы применить манифест на Puppet Agent, вы обычно запускаете его через Puppet Agent, как это было указано выше. Если вы хотите протестировать манифест вручную с Puppet Master, вы можете использовать следующую команду:puppet apply /etc/puppetlabs/code/environments/production/manifests/neat.pp
Однако помните, что команда
puppet agent -t
должна автоматически применять конфигурацию, которую вы создали. -
Перезапуск служб:
Если после выполнения вышеуказанных действий все еще возникают проблемы, попробуйте перезапустить службу Puppet на Puppet Agent:systemctl restart puppet
Затем еще раз выполните команду
puppet agent -t
.
Дополнительное устранение неполадок
- Проверка версии: Убедитесь, что версии Puppet на обеих машинах согласуются между собой.
- Проверка зависимостей: Возможно, ваш манифест имеет зависимости от других классов или ресурсов, которые также должны быть доступны для Puppet Agent.
Если после выполнения всех этих шагов проблема не решится, возможно, стоит обратиться за помощью на поддержку Puppet или на специализированные форумы.
Удачи с развертыванием вашего решения Puppet!