Гид по технологиям

Foreman — добавление Puppet Agent (часть 2)

• 6 min read • DevOps • Обновлено 09 Nov 2025
Foreman: добавление Puppet Agent — часть 2
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 (как целевые агенты)

Что мы сделаем

  1. Настроим хосты и FQDN
  2. Установим и настроим Puppet Agent
  3. Подпишем сертификаты на Puppet Master (Foreman)
  4. Протестируем развёртывание 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 на Ubuntu

Установка 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

Скриншот установки Puppet Agent на CentOS

Теперь агент установлен и запущен.

Шаг 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

  1. В Foreman откройте меню Infrastructure → Smart Proxies.

Список Smart Proxies в Foreman

  1. Выберите сервер Foreman, затем в выпадающем меню выберите Certificates.

  2. В списке Pending найдите client.hakase-labs.io и нажмите Sign.

Кнопка подписи сертификата в Foreman

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

Список хостов в Foreman

Шаг 4 — Тестирование: модули nginx и ntp

Мы установим модуль nginx на Puppet Master, импортируем классы в Foreman, привяжем классы к хосту-агенту и прогоним агент вручную.

Скачивание модуля nginx

На Puppet Master выполните:

sudo /opt/puppetlabs/bin/puppet module install puppet/nginx

Импорт классов в Foreman

  1. В Foreman откройте Configure → Puppet Classes.
  2. Нажмите Import Environment from server.hakase-labs.io.
  3. Отметьте доступные классы и нажмите Update.

Теперь модуль nginx должен быть в списке.

Список модулей Nginx в Foreman

Привязка модулей к хосту

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

Вкладка Puppet Classes для хоста

Дополнительно: чтобы просмотреть активные классы, нажмите YAML в деталях хоста — вы увидите сгенерированную YAML-конфигурацию.

Применение конфигурации на агенте

На агенте выполните:

sudo /opt/puppetlabs/bin/puppet agent --test

Ожидаемый вывод показывает получение каталога и применение ресурсов.

Результат выполнения puppet agent --test

Проверьте открытые порты и доступность сервиса nginx:

netstat -plntu
curl client.hakase-labs.io

Результат curl к nginx на агенте

Для проверки конфигурации NTP откройте /etc/ntp.conf на агенте — он должен быть управляем Puppet:

cat /etc/ntp.conf

Файл конфигурации ntp.conf

Проверочные сценарии и критерии приёмки

Критерии приёмки — что проверить, чтобы считать задачу выполненной:

  • Агент зарегистрирован в Foreman и отображается в Hosts → All Hosts
  • Сертификат агента подписан (через CLI или UI)
  • puppet agent –test завершается без ошибок
  • nginx слушает 80/tcp на агенте и отвечает на HTTP-запросы
  • /etc/ntp.conf содержит ожидаемые настройки, управляемые Puppet

Тест-кейсы (минимум):

  1. Проверить FQDN: ping $(hostname -f)
  2. Проверить службу puppet: systemctl status puppet
  3. Выполнить puppet agent –test и зафиксировать отсутствие ошибок
  4. curl к nginx и проверка HTTP 200
  5. Просмотреть содержимое /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, импортировать модули и назначать классы. Также включены чек-листы, тест-кейсы, альтернативы и рекомендации по безопасности.

Ссылки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро