Как запустить Puppet-манифест или настроить агенте Puppet?

«Как запустить Puppet-манифест или настроить агенте Puppet?» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В инфраструктуре, которую я администрировал, Puppet использовался в двух основных режимах: агент-серверный (Puppet Master/Server) и standalone (apply).

1. Standalone-режим (Puppet Apply): Идеально для bootstrapping или управления отдельными серверами без центрального мастера. Манифесты применяются напрямую.

# Применить конкретный манифест
puppet apply /etc/puppetlabs/code/environments/production/manifests/site.pp

# Применить манифест с подробным выводом для отладки
puppet apply --verbose --debug /path/to/manifest.pp

# Использовать тестовый режим (покажет изменения, но не применит)
puppet apply --noop /path/to/manifest.pp

2. Агент-серверный режим (Puppet Agent): Стандартный режим, где агенты на нодах периодически обращаются к Puppet Server за конфигурацией (каталогом).

# Запустить одноразовый пробный прогон агента
/opt/puppetlabs/bin/puppet agent --test

# Эта команда заставит агента:
# 1. Отправить запрос на сертификат на сервер (если его нет).
# 2. Получить конфигурацию и применить её.
# 3. Вывести подробный лог.

3. Управление службой (демоном): В production агент обычно работает как демон, запускаясь по расписанию (каждые 30 минут по умолчанию).

# Включить и запустить службу Puppet Agent (systemd)
sudo systemctl enable puppet
sudo systemctl start puppet

# Просмотр статуса и логов
sudo systemctl status puppet
sudo journalctl -u puppet -f

# Аналогично для Puppet Server (на мастере)
sudo systemctl enable puppetserver
sudo systemctl start puppetserver

Ключевые файлы конфигурации:

  • /etc/puppetlabs/puppet/puppet.conf – главный конфиг. Здесь задается server = puppetmaster.example.com для агентов.
  • /etc/puppetlabs/code/ – каталог с манифестами, модулями и данными (Hiera) на сервере.

Первоначальная настройка агента: После установки пакета puppet-agent на новой ноде, в puppet.conf указывается адрес сервера, затем запускается puppet agent --test. На сервере необходимо подписать сертификат ноды командой puppetserver ca sign <node_name>.