3.9.14.4 Puppet - централизованное управление конфигурацией ОС и ПО
Предварительная подготовка
Установка Puppet-сервера
Установка Puppet-клиента
Подключение клиента к серверу
Окружение
- Версия ОС: 8
- Конфигурация ОС: Сервер графический
- Версия ПО: puppet-8.3.1-1
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— статический IP-адрес сервера; puppet.server— полное доменное имя, заданное для сервера;192.168.88.36— статический IP-адрес клиента;puppet.client— полное доменное имя, заданное для клиента.
На клиенте в базу данных доменных имен добавить имя и IP-адрес сервера:
echo '192.168.88.21 puppet.server' | sudo tee -a /etc/hosts
Установка Puppet-сервера
На сервере установите пакет сервера 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:
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-клиента
На клиенте необходимо установить пакет клиента Puppet:
sudo dnf install puppet
Затем требуется отредактировать конфигурационный файл клиента /etc/puppetlabs/puppet/puppet.conf:
sudo nano /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 -t
Info: 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 httpd
generic-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
Проверка связи между сервером и клиентом прошла успешно.
Дата последнего изменения: 20.11.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.