Установка Puppet на CentOS 7 — master и agent
Введение
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 должен быть доступен)
План действий
- Предварительная настройка (hosts, NTP, SELinux, репозиторий Puppet)
- Установка и настройка puppetserver на master
- Установка и настройка puppet-agent на agent
- Подпись сертификата и проверка подключения
- Создание первого манифеста для установки 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
Важно убедиться, что имена соответствуют 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
После успешного добавления репозитория рекомендуется перезагрузить оба сервера:
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
Установка и настройка 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Ожидаемый результат: агент получает и применяет конфигурацию без ошибок.

Создание первого манифеста и тест
На 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.


Критерии приёмки
- 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 запущена и включена
- Применение манифестов проходит успешно
Мини‑методология развёртывания (быстрый план)
- Подготовить базовую конфигурацию хостов и время.
- Добавить репозитории и установить пакеты.
- Настроить и запустить master.
- Установить агент, зарегистрировать и подписать сертификаты.
- Развернуть тестовый манифест и проверить результат.
Ментальные модели
- 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-среде дополнительно проработайте политики безопасности, управление сертификатами, бэкап конфигураций и мониторинг.
Ссылки
- Официальная документация Puppet: https://docs.puppet.com/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента