Предварительная подготовка Установка Puppet-сервера Установка Puppet-клиента Подключение клиента к серверу
Окружение
Puppet — это кроссплатформенная структура, позволяющая системным администраторам выполнять общие задачи с использованием кода. Код позволяет выполнять различные задачи от установки новых программ до проверки прав доступа файлов или обновлений пользовательских учетных записей. В большинстве случаев Puppet используется в конфигурации клиент/сервер.
Вы можете подробнее ознакомиться с организацией централизованного управления конфигурацией ОС и ПО при помощи Puppet, просмотрев наши обучающие видео:
на RuTube — Puppet - централизованное управление конфигурацией ОС и ПО;
в Яндекс.Дзен — Puppet - централизованное управление конфигурацией ОС и ПО;
в VK Видео — Puppet - централизованное управление конфигурацией ОС и ПО.
На наших каналах вы также сможете найти много другой полезной информации.
Перед началом настройки задайте статические имена хостов.
sudo hostnamectl set-hostname puppet.server --static
sudo hostnamectl set-hostname puppet.client --static
На сервере прописать статические сопоставления имён и IP-адресов в файле hosts:
echo '192.168.88.21 puppet.server' | sudo tee -a /etc/hosts echo '192.168.88.36 puppet.client' | sudo tee -a /etc/hosts
где:
192.168.88.21
puppet.server — полное доменное имя, заданное для сервера;
puppet.server
192.168.88.36 — статический IP-адрес клиента;
192.168.88.36
puppet.client — полное доменное имя, заданное для клиента.
puppet.client
На клиенте в базу данных доменных имен добавить имя и IP-адрес сервера:
echo '192.168.88.21 puppet.server' | sudo tee -a /etc/hosts
На сервере установите пакет сервера Puppet:
sudo dnf install puppetserver
Затем требуется отредактировать конфигурационный файл сервера Puppet /etc/puppetlabs/puppet/puppet.conf:
sudo nano /etc/puppetlabs/puppet/puppet.conf
Добавьте следующие настройки:
[main] server = puppet.server ca_server = puppet.server [server] vardir = /opt/puppetlabs/server/data/puppetserver logdir = /var/log/puppetlabs/puppetserver rundir = /var/run/puppetlabs/puppetserver pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid codedir = /etc/puppetlabs/code dns_alt_names = puppet
dns_alt_names — список имен хостов, которые серверу разрешено использовать в качестве основного сервера. Имя хоста, которое ваши агенты используют в настройках своего сервера, должно быть включено либо в этот параметр, либо в параметр имени сертификата основного сервера. Этот параметр используется только при первоначальной генерации сертификата основного сервера. Далее перезагрузите/запустите сервер Puppet:
dns_alt_names
systemctl start puppetserver --now
Проверьте, что статус сервиса Puppet изменился на активный:
systemctl status puppetserver ● puppetserver.service - puppetserver Service Loaded: loaded (/usr/lib/systemd/system/puppetserver.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2025-10-16 22:12:57 MSK; 4min 35s ago Main PID: 1794 (java) Tasks: 52 (limit: 4915) Memory: 1.7G CPU: 43.484s CGroup: /system.slice/puppetserver.service
На клиенте необходимо установить пакет клиента Puppet:
sudo dnf install puppet
Затем требуется отредактировать конфигурационный файл клиента /etc/puppetlabs/puppet/puppet.conf:
[main] server = puppet.server
После этого запустите клиент Puppet:
systemctl start puppet --now
Проверьте, что статус клиента Puppet активен:
systemctl status puppet ● puppet.service - Puppet agent Loaded: loaded (/usr/lib/systemd/system/puppet.service; disabled; preset: disabled) Drop-In: /usr/lib/systemd/system/service.d └─10-timeout-abort.conf Active: active (running) since Fri 2025-10-17 08:56:13 MSK; 30ms ago Docs: man:puppet-agent(8) Main PID: 34268 (ruby-mri) Tasks: 1 (limit: 2325) Memory: 14.8M CPU: 21ms CGroup: /system.slice/puppet.service └─34268 /usr/bin/ruby-mri /usr/bin/puppet agent --no-daemonize
Далее на серверной машине необходимо перечислить узлы клиента Puppet на сервере Puppet:
sudo /opt/puppetlabs/bin/puppetserver ca list --all
Затем нужно добавить имя хоста Puppet-клиента к Puppet-серверу:
sudo /opt/puppetlabs/bin/puppetserver ca sign --certname puppet.client
После этого на клиентской машине необходимо запустить тест соединения с сервером Puppet:
sudo /usr/bin/puppet agent --test Info: Using environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for puppet.client Info: Applying configuration version '1760682494' Notice: Applied catalog in 0.28 seconds
Давайте проверим корректность работы Puppet-клиента и Puppet-сервера, установив пакет httpd с помощью манифеста.
Для этого сначала убедитесь, что на текущий момент на клиентской машине не установлен пакет httpd:
rpm -qa | grep -i httpd
Затем на серверной машине создайте манифест нового модуля install_pkg сервера Puppet, добавив задачу установки пакета httpd в файле /etc/puppetlabs/code/environments/production/manifests/init.pp:
sudo nano /etc/puppetlabs/code/environments/production/manifests/init.pp
class install_pkg { package { httpd: ensure => installed } }
И создайте манифест, подключающий модуль install_pkg сервера Puppet в файле /etc/puppetlabs/code/environments/production/manifests/site.pp:
sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp
node default { include install_pkg }
После этого на клиентской машине принудительно запустите агент сервера Puppet:
sudo /usr/bin/puppet agent -tInfo: Using environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for puppet.client Info: Applying configuration version '1760682848'Notice: /Stage[main]/Install_pkg/Package[httpd]/ensure: created Notice: Applied catalog in 22.35 seconds
Убедитесь, что на клиентской машине пакет httpd был успешно установлен:
rpm -qa | grep -i httpdgeneric-logos-httpd-18.0.0-16.red80.noarchhttpd-filesystem-2.4.65-6.red80.noarchhttpd-tools-2.4.65-6.red80.x86_64httpd-core-2.4.65-6.red80.x86_64
Проверка связи между сервером и клиентом прошла успешно.
Дата последнего изменения: 17.10.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.