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

Установка Puppet на CentOS 7 — master и agent

• 6 min read • DevOps • Обновлено 21 Nov 2025
Puppet на CentOS 7 — мастер и агент
Puppet на CentOS 7 — мастер и агент

Введение

Puppet — это инструмент управления конфигурациями и фреймворк для автоматизации серверов с открытым исходным кодом. Он работает на Unix-подобных и Microsoft Windows системах. Puppet позволяет централизованно управлять сотнями узлов с одного master-сервера.

В этом руководстве показан практический рабочий процесс: мы настроим один сервер как puppet master и второй как puppet agent на CentOS 7, затем проверим передачу конфигурации и создадим первый манифест для установки httpd.

Важно: приведённые команды выполняются с правами root или через sudo. Термин “master” в Puppet соответствует центральному серверу управления; “agent” — клиенту на управляемом узле.

Кому это пригодится

  • Системным администраторам и DevOps-инженерам, которые впервые разворачивают Puppet.
  • Тем, кто хочет автоматизировать развёртывание пакетов и сервисов на CentOS 7.

Что понадобится

  • Два сервера CentOS 7 (виртуальные или физические)
    • 10.0.15.10 — master.hakase.io, минимум 2 ГБ оперативной памяти
    • 10.0.15.11 — agent.hakase.io
  • Доступ root или sudo
  • Связь по сети между серверами (порт 8140/TCP должен быть доступен)

План действий

  1. Предварительная настройка (hosts, NTP, SELinux, репозиторий Puppet)
  2. Установка и настройка puppetserver на master
  3. Установка и настройка puppet-agent на agent
  4. Подпись сертификата и проверка подключения
  5. Создание первого манифеста для установки Apache

Предварительная подготовка

Ниже — детализированные шаги, которые нужно выполнить на обоих серверах.

Настройка файла hosts

Подключитесь к каждому серверу от root:

ssh [email protected]
ssh [email protected]

Откройте /etc/hosts и добавьте соответствующие записи в конец файла:

vim /etc/hosts

Добавьте:

10.0.15.10      master.hakase.io
10.0.15.11      agent.hakase.io

Сохраните и выйдите. Проверьте разрешение имён:

ping -c 3 master.hakase.io
ping -c 3 agent.hakase.io

Редактирование /etc/hosts на master и agent

Важно убедиться, что имена соответствуют IP-адресам.

Синхронизация времени (NTP)

Синхронизация времени между master и agent критична: проверки сертификатов и согласованность событий зависят от корректного времени.

Установите ntp и ntpdate:

yum -y install ntp ntpdate

Синхронизируйте время через пул NTP (здесь пример для CentOS):

sudo ntpdate 0.centos.pool.ntp.org

Запустите и включите службу ntpd:

sudo systemctl start ntpd
sudo systemctl enable ntpd

После этого проверка времени на обоих серверах должна быть согласована.

Отключение SELinux

Для простоты настройки в этом руководстве SELinux выключается. На production-средах лучше настроить SELinux корректно вместо полного отключения.

Отредактируйте конфигурацию:

vim /etc/sysconfig/selinux

Установите:

SELINUX=disabled

Сохраните и перезагрузите систему при необходимости.

Добавление репозитория Puppet

Добавьте репозиторий Puppet5:

rpm -Uvh https://yum.puppetlabs.com/puppet5/puppet5-release-el-7.noarch.rpm

Добавление репозитория Puppet через rpm

После успешного добавления репозитория рекомендуется перезагрузить оба сервера:

reboot

Установка и настройка puppetserver на master

Выполните на master.hakase.io:

sudo yum -y install puppetserver

Настройка памяти для puppetserver

По умолчанию puppetserver часто требует настроек JVM. В этом примере ограничим heap до 1 ГБ.

Отредактируйте:

vim /etc/sysconfig/puppetserver

Измените строку на:

JAVA_ARGS="-Xms1g -Xmx1g ...."

Сохраните изменения.

Базовая конфигурация Puppet

Отредактируйте puppet.conf:

cd /etc/puppetlabs/puppet
vim puppet.conf

Добавьте:

[master]
 dns_alt_names=master.hakase.io,puppet

[main]
 certname = master.hakase.io
 server = master.hakase.io
 environment = production
 runinterval = 1h

Запустите и включите puppetserver:

systemctl start puppetserver
systemctl enable puppetserver

Если используется firewalld, откройте порт 8140:

firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload

Добавление порта 8140 в firewalld

Установка и настройка puppet agent на agent

На agent.hakase.io установите пакет агента:

yum install -y puppet-agent

Отредактируйте puppet.conf на агенте:

cd /etc/puppetlabs/puppet
vim puppet.conf

Вставьте:

[main]
 certname = agent.hakase.io
 server = master.hakase.io
 environment = production
 runinterval = 1h

Запустите сервис агента и включите автозапуск:

/opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

На этом этапе агент попытается зарегистрироваться у master и отправит CSR (запрос подписи сертификата).

Подпись сертификата на master

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

/opt/puppetlabs/bin/puppet cert list

Вы увидите ожидающий запрос от agent.hakase.io. Подпишите сертификат:

/opt/puppetlabs/bin/puppet cert sign agent.hakase.io

После подписи агент сможет установить доверительный канал и получать манифесты от master.

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

На агенте выполните принудительный запуск для теста:

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

Ожидаемый результат: агент получает и применяет конфигурацию без ошибок.

Вывод run puppet agent --test и результат

Создание первого манифеста и тест

На master создайте файл site.pp в окружении production:

cd /etc/puppetlabs/code/
cd environments/production/manifests
vim site.pp

Добавьте простой манифест для установки httpd:

node 'agent.hakase.io' {
    package { 'httpd':
        ensure  => "installed",
    }
    service { 'httpd':
        ensure => running,
        enable => true
    }
}

Сохраните. На агенте снова выполните:

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

Агент должен получить манифест и установить/запустить httpd. Откройте в браузере http://10.0.15.11/ — вы увидите стартовую страницу Apache.

Создание site.pp для установки httpd

Страница по умолчанию Apache на агенте 10.0.15.11

Критерии приёмки

  • Puppet master успешно запускается и слушает порт 8140
  • Агент подключён к master и имеет подписанный сертификат
  • Команда /opt/puppetlabs/bin/puppet agent –test выполняется без ошибок
  • Манифест site.pp применяется на агенте, httpd установлен и запущен

Рекомендации по безопасности и эксплуатация

  • По возможности не отключайте SELinux в production; вместо этого настройте правила или используйте модуль SELinux для Puppet.
  • Ограничьте доступ к порту 8140 только доверенным подсетям в firewall или через VPN.
  • Регулярно обновляйте пакеты puppetserver и puppet-agent из официального репозитория.
  • Включите логирование и мониторинг состояния puppetserver (используйте системные метрики и алерты).

Типичные ошибки и пути устранения

  • “CSR не отображается” — проверьте соединение сети, правильность записи в /etc/hosts и время системы (NTP).
  • “puppet agent –test” завершён с ошибкой сертификата — убедитесь, что certname в puppet.conf совпадает с именем в CSR и что вы подписали сертификат на master.
  • “Пакет не устанавливается” — проверьте доступ к репозиториям и конфигурацию yum на агенте.

Альтернативные подходы

  • Ansible — безагентное управление конфигурациями, удобно для ad‑hoc задач и множества коротких изменений.
  • SaltStack — агент/мастер модель, похожая на Puppet, отличается скоростью и архитектурой реактивных команд.
  • Chef — ещё один инструмент для управления конфигурациями, использующий Ruby DSL.

Выбор зависит от требований к модели управления (агент/безагент), масштабируемости и наличия знаний у команды.

Полезные шпаргалки и чеклисты

Чеклист для master:

  • Установлен puppetserver
  • Изменён heap JVM (при необходимости)
  • Открыт порт 8140 в firewall
  • Подписаны CSR агентов

Чеклист для agent:

  • Установлен puppet-agent
  • Указан server и certname в /etc/puppetlabs/puppet/puppet.conf
  • Служба puppet запущена и включена
  • Применение манифестов проходит успешно

Мини‑методология развёртывания (быстрый план)

  1. Подготовить базовую конфигурацию хостов и время.
  2. Добавить репозитории и установить пакеты.
  3. Настроить и запустить master.
  4. Установить агент, зарегистрировать и подписать сертификаты.
  5. Развернуть тестовый манифест и проверить результат.

Ментальные модели

  • Puppet — модель «master-agent»: master управляет состоянием, агент периодически опрашивает master.
  • Манифесты описывают желаемое состояние (idempotent), Puppet заботится о достижении этого состояния.

Короткий глоссарий

  • master — центральный сервер Puppet, выдающий манифесты и подписывающий сертификаты
  • agent — клиент Puppet на управляемом узле
  • manifest — файл с описанием конфигурации (например, site.pp)
  • CSR — Certificate Signing Request, запрос на подпись сертификата

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

  • Выполнить /opt/puppetlabs/bin/puppet agent –test и убедиться в отсутствии ошибок.
  • Перезапустить puppetserver и проверить, что агенты продолжают получать конфигурации.

Резюме

Установка Puppet на CentOS 7 включает подготовку сети и времени, добавление репозитория Puppet, установку puppetserver и puppet-agent, обмен сертификатами и создание первого манифеста. После выполнения шагов мастер отдаёт манифесты, агент применяет их и подтверждает успешную установку служб, таких как httpd.

Важно: в production-среде дополнительно проработайте политики безопасности, управление сертификатами, бэкап конфигураций и мониторинг.

Ссылки

Поделиться: 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 быстро