Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Common Edition 2.12.30 и более поздним обновлениям
Аннотация
Puppet — нструмент управления конфигурацией, позволяющий системным администраторам автоматизировать предоставление, настройку и управление серверной инфраструктурой. Требует установки агентского ПО на управляемые компьютеры. Puppet позволяет описывать желаемое состояние систем в виде кода и применяет этот код для настройки серверов, рабочих станций и т.д. Puppet функционирует по принципу взаимодействия двух компонентов: Puppet Server и Puppet Agent. Puppet Server выступает в роли центрального узла, который хранит конфигурации и управляет их распространением. Puppet Agent работает на управляемых узлах и отвечает за применение конфигураций, полученных от сервера.
Основные термины
- Агент (Agent) — компонент Puppet, работающий на управляемых узлах. Агент периодически отправляет запросы на сервер для получения обновлений и отправляет отчеты о состоянии системы после применения изменений.
- Сервер (Server) — центральный компонент Puppet, который хранит и распространяет конфигурации по запросу агентов.
- Манифест (Manifest) — файл с расширением
.pp, содержащий описание желаемого состояния системы на декларативном языке Puppet DSL. - Модуль (Module) — структурированный набор манифестов, файлов и шаблонов для решения конкретной задачи. Существуют готовые модули Puppet.
- Ресурс (Resource) — единица конфигурации в Puppet (например, файл, пакет, служба). Puppet Agent проверяет состояние каждого ресурса перед выполнением действий из манифеста.
Принцип работы Puppet
- Описание состояния. Администратор описывает желаемое состояние системы в манифесте.
- Распространение конфигурации. После запроса агентов Puppet Server распространяет на них манифесты, содержащие программную конфигурацию операционной системы.
- Применение изменений. Puppet Agent применяет изменения для достижения желаемого состояния операционной системы.
- Проверка соответствия. Puppet Agent периодически проверяет, что текущее состояние системы соответствует заданному. Если Puppet Agent не может получить обновления от сервера то, по умолчанию, система остаётся в состоянии, актуализированном на момент последнего запроса.
Взаимодействие между сервером и агентами осуществляется через HTTPS (порт 8140) с использованием SSL/TLS. Puppet Server выполняет роль центра сертификации, управляя подписью сертификатов агентов для аутентификации.
Описание стенда
| Параметр | Puppet Server(сервер) | Puppet Agent(агент) |
| Имя узла | master.astra.lan | agent1.astra.lan |
| Статический IP-адрес узла | 10.0.2.120 | 10.0.2.121 |
На стенде отсутствует настроенный DNS-сервер, поэтому для разрешения IP-адресов используются файлы /etc/hosts на сервере и на клиенте.
Настройка стенда
Для правильной работы служб Puppet Server и Puppet Agent необходимо настроить разрешение имён одним из способов:
- либо в службе DNS;
- либо указать адреса хостов в файлах
/etc/hostsна всех узлах (этот вариант используется в данной статье):
127.0.0.1 localhost 10.0.2.120 master.astra.lan master puppet 10.0.2.121 agent1.astra.lan agent1 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Далее необходимо присвоить имена узлам выполнив на сервере:
и на агенте:
Если включен межсетевой экран, то необходимо разрешить коммуникации через порт 8140. Для сетевого экрана ufw:
Установка Puppet
Установка Puppet Server
Для установки выполнить на сервере следующие команды:
sudo apt install default-jre-headless puppetserver
openjdk-jre-headless необходимо для того, чтобы он обновился из расширенного репозитория если был установлен ранее.Разрешить автоматический запуск Puppet Server и запусть его:
sudo systemctl start puppetserver
active
Установка Puppet Agent
Указать имя сервера в конфигурационном файле:
server = master.astra.lan show_diff = true
Где show_diff — параметр, указывающий инструменту выводить подробную информацию об изменениях в конфигурации клиента в ходе выполнения манифестов. Параметр применяется при настройке и отладке.
Добавить службу Puppet Agent в автозагрузку и запустить её:
sudo systemctl start puppet
active
Подписание сертификатов агента
При первом запуске клиентская служба Puppet Agent в течении установленного времени синхронизации отправит на Puppet Server запрос на подпись сертификата. Для просмотра списка запросов на подпись сертификата выполнить на сервере следующую команду:
Requested Certificates: agent1.astra.lan (SHA256) F7:D5:E5:AB:AA:86:7F:EF:19:3D:D9:B9:E3:E9:63:DC:AE:31:17:57:67:3D:2B:D7:A5:1C:71:E3:46:E0:A7:1E
Подписать сертификат:
Successfully signed certificate request for agent1.astra.lan
Остановить службу
sudo systemctl stop puppetВыполнить тестирование работы службы, в процессе которого служба запросит и получит сертификат:
sudo /opt/puppetlabs/bin/puppet agent --test
Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for agent1.astra.lan
Info: Certificate Request fingerprint (SHA256): F7:D5:E5:AB:AA:86:7F:EF:19:3D:D9:B9:E3:E9:63:DC:AE:31:17:57:67:3D:2B:D7:A5:1C:71:E3:46:E0:A7:1E
Info: Downloaded certificate for agent1.astra.lan from puppet
Info: Using configured environment 'production'
Info: Retrieving pluginfacts Info: Retrieving plugin
Info: Retrieving locales
Info: Caching catalog for agent1.astra.lan
Info: Applying configuration version '1568370748'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml Notice: Applied catalog in 0.02 secondsПовторно запустить службу:
sudo systemctl start puppet