Foreman — добавление Puppet Agent (часть 2)
Важно: перед началом убедитесь, что Foreman/Puppet Master доступен по FQDN и у вас есть привилегии root на целевых узлах.
Краткое содержание
- Подготовка FQDN и /etc/hosts
- Установка Puppet Agent (Ubuntu 18.04 и CentOS 7)
- Подпись запросов на сертификаты (через CLI и интерфейс Foreman)
- Импорт модулей, привязка классов и тестирование nginx/NTP
- Чек-листы, тест-кейсы, альтернативы и рекомендации по безопасности
Предисловие
В этом руководстве предполагается, что Foreman уже установлен и настроен (см. часть 1). Мы будем добавлять агенты Puppet, подписывать их сертификаты и применять простые манифесты (через модули nginx и ntp). Действия демонстрируются для Ubuntu 18.04 LTS и CentOS 7.
Требования
- Foreman/Puppet Master уже установлен и доступен
- Учетная запись с правами root (локально или через sudo)
- Среда: Ubuntu 18.04 LTS или CentOS 7 (как целевые агенты)
Что мы сделаем
- Настроим хосты и FQDN
- Установим и настроим Puppet Agent
- Подпишем сертификаты на Puppet Master (Foreman)
- Протестируем развёртывание nginx и NTP
Шаг 1 — Настройка хостов
Сначала задайте FQDN на серверах-агентах. Используйте hostnamectl для смены имени хоста:
hostnamectl set-hostname client.hakase-labs.ioОтредактируйте /etc/hosts и пропишите соответствия IP ↔ FQDN:
vim /etc/hostsПример содержимого (замените IP и имена на свои):
10.9.9.20 server.hakase-labs.io server
10.9.9.21 client.hakase-labs.io clientПроверьте разрешение FQDN:
ping $(hostname -f) -c 3Если ping возвращает ваш IP, разрешение корректно.
Шаг 2 — Установка и настройка Puppet Agent
Мы устанавливаем Puppet Agent 5. Для Ubuntu и CentOS процесс немного отличается: требуется добавить репозиторий Puppet и установить пакет puppet-agent.
Установка Puppet Agent на Ubuntu 18.04
Скачайте пакет репозитория и установите его:
cd /tmp && wget https://apt.puppetlabs.com/puppet5-release-bionic.deb
sudo dpkg -i puppet5-release-bionic.debОбновите кэш apt и установите агент:
sudo apt update
sudo apt install -y puppet-agent
Установка Puppet Agent на CentOS 7
Скачайте rpm-репозиторий и установите его:
cd /tmp && wget https://yum.puppet.com/puppet5/puppet5-release-el-7.noarch.rpm
rpm -ivh puppet5-release-el-7.noarch.rpmУстановите пакет:
sudo yum install -y puppet-agentПосле установки настройте агент — отредактируйте /etc/puppetlabs/puppet/puppet.conf и задайте server и certname:
cd /etc/puppetlabs/puppet/
vim puppet.confВ секции [agent] добавьте (пример — замените на свои значения):
[agent]
server = server.hakase-labs.io
certname = client.hakase-labs.io
runinterval = 180
environment = production
listen = false
pluginsync = true
report = trueСохраните и запустите сервис puppet:
sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=trueИли перезапустите, если требуется:
sudo systemctl restart puppet
Теперь агент установлен и запущен.
Шаг 3 — Подпись запросов на сертификаты Puppet Agent
Агенты при первом запуске создают CSR (запросы на сертификат). Их нужно подписать на Puppet Master. Это можно сделать через CLI на сервере Foreman/Puppet Master либо через веб-интерфейс Foreman.
Подпись CSR через CLI на Puppet Master
Выполните на Puppet Master:
sudo /opt/puppetlabs/bin/puppetserver ca listВы увидите список ожидающих CSR. Подпишите конкретный сертификат:
sudo /opt/puppetlabs/bin/puppetserver ca sign --certname client.hakase-labs.ioПосле этого сертификат агента будет подписан и агент сможет устанавливать защищённое соединение с Master.
Подпись CSR через веб-интерфейс Foreman
- В Foreman откройте меню Infrastructure → Smart Proxies.

Выберите сервер Foreman, затем в выпадающем меню выберите Certificates.
В списке Pending найдите client.hakase-labs.io и нажмите Sign.

- Проверьте Hosts → All Hosts — там должен появиться ваш агент.

Шаг 4 — Тестирование: модули nginx и ntp
Мы установим модуль nginx на Puppet Master, импортируем классы в Foreman, привяжем классы к хосту-агенту и прогоним агент вручную.
Скачивание модуля nginx
На Puppet Master выполните:
sudo /opt/puppetlabs/bin/puppet module install puppet/nginxИмпорт классов в Foreman
- В Foreman откройте Configure → Puppet Classes.
- Нажмите Import Environment from server.hakase-labs.io.
- Отметьте доступные классы и нажмите Update.
Теперь модуль nginx должен быть в списке.

Привязка модулей к хосту
- Hosts → All Hosts → выберите client.hakase-labs.io → Edit.
- Во вкладке Puppet Classes добавьте nginx и ntp, затем Submit.

Дополнительно: чтобы просмотреть активные классы, нажмите YAML в деталях хоста — вы увидите сгенерированную YAML-конфигурацию.
Применение конфигурации на агенте
На агенте выполните:
sudo /opt/puppetlabs/bin/puppet agent --testОжидаемый вывод показывает получение каталога и применение ресурсов.

Проверьте открытые порты и доступность сервиса nginx:
netstat -plntu
curl client.hakase-labs.io
Для проверки конфигурации NTP откройте /etc/ntp.conf на агенте — он должен быть управляем Puppet:
cat /etc/ntp.conf
Проверочные сценарии и критерии приёмки
Критерии приёмки — что проверить, чтобы считать задачу выполненной:
- Агент зарегистрирован в Foreman и отображается в Hosts → All Hosts
- Сертификат агента подписан (через CLI или UI)
- puppet agent –test завершается без ошибок
- nginx слушает 80/tcp на агенте и отвечает на HTTP-запросы
- /etc/ntp.conf содержит ожидаемые настройки, управляемые Puppet
Тест-кейсы (минимум):
- Проверить FQDN: ping $(hostname -f)
- Проверить службу puppet: systemctl status puppet
- Выполнить puppet agent –test и зафиксировать отсутствие ошибок
- curl к nginx и проверка HTTP 200
- Просмотреть содержимое /etc/ntp.conf и убедиться в наличии управляющих параметров
Чек-листы по ролям
Администратор Foreman:
- Убедиться, что Foreman доступен по FQDN
- Подписать CSR агентов (CLI или UI)
- Импортировать классы и назначить их на хост
- Проверить логи Foreman при ошибках (production.log)
Оператор / инженер поддержки на хосте-агенте:
- Настроить /etc/hosts и hostname
- Установить puppet-agent и задать server/certname
- Запустить puppet agent и предоставить CSR
- Выполнить puppet agent –test и предоставить вывод администратору
Когда это не подойдёт (ограничения и контрпримеры)
- Среда с FW/NAT, где FQDN не разрешается или порты заблокированы — агент не подключится.
- Если используется Puppet 6/7 с отличающейся схемой репозиториев — инструкции для Puppet 5 не подойдут.
- Для управляемых окружений с изолированными сегментами сети потребуется отдельный Smart Proxy/CA.
Альтернативные подходы
- Использовать Puppet Bolt для одноразового применения задач на узлах без подписки сертификата.
- Использовать классификацию через external node classifier (ENC) вместо назначения классов в Foreman.
- Для крупных инфраструктур применять CI/CD для публикации модулей в Puppetfile и r10k/Code Manager для развертывания.
Модель принятия решений (короткая подсказка)
- Нужна постоянная конфигурация и отчётность → используйте Foreman + Puppet.
- Нужна одноразовая конфигурация без долгой регистрации агентов → рассмотрите Bolt.
- Много узлов в разных сетях → внедрите Smart Proxies и распределённую CA.
flowchart TD
A[Начало] --> B{Уже установлен Foreman?}
B -- Да --> C[Настроить FQDN и hosts]
B -- Нет --> D[Установить Foreman и Puppet Master]
C --> E[Установить puppet-agent]
E --> F[Подписать CSR 'CLI или UI']
F --> G[Импортировать модули и назначить классы]
G --> H[Запустить puppet agent --test и проверить сервисы]
H --> I[Готово]Безопасность и рекомендации по жёсткому упору
- Используйте TLS и подписанные сертификаты (стандарт Puppet). Не отключайте верификацию.
- Ограничьте доступ к Puppet Master/Foreman по IP и используйте firewall (ufw/iptables).
- Регулярно обновляйте Puppet и модули. Для prod‑окружений тестируйте модули в staging.
- Логи Puppet и Foreman храните централизованно и отслеживайте ошибки подписания/синхронизации.
Быстрые советы и эвристики
- Всегда проверяйте hostname -f: проблемы с /etc/hosts — частая причина ошибок.
- Если CSR не отображается — убедитесь, что агент может достичь порта 8140 Puppet Master.
- При проблемах с модулями — проверьте пути среды (environment) и импорт классов в Foreman.
Факты (ключевые числа)
- Порт Puppet Master по умолчанию: 8140/tcp
- Частота запуска агента по умолчанию в примере: runinterval = 180 (секунд)
- Поддерживаемая версия в данном руководстве: Puppet 5 (Ubuntu 18.04 / CentOS 7)
Краткий глоссарий (1 строка)
- FQDN — полное доменное имя хоста (например, client.hakase-labs.io)
- CSR — запрос на сертификат (Certificate Signing Request)
- Smart Proxy — компонент Foreman для взаимодействия с внешними сервисами в сети
Заключение
В этом руководстве вы научились добавлять Puppet агента в Foreman: настраивать FQDN, устанавливать puppet-agent на Ubuntu и CentOS, подписывать сертификаты через CLI и через интерфейс Foreman, импортировать модули и назначать классы. Также включены чек-листы, тест-кейсы, альтернативы и рекомендации по безопасности.
Ссылки
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента