| Оглавление |
|---|
| Предупреждение |
|---|
| При работе в Astra Linux Special Edition x.7.0 и x.7.1 подключить расширенный репозиторий, для обновлений выпущенный ранее обновления БЮЛЛЕТЕНЬ № 2022-0819SE17 (оперативное обновление 1.7.2) также подключить компонент расширенного репозитория astra-ce (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования). |
| Информация | ||
|---|---|---|
| ||
|
Аннотация
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 на сервере и на клиенте.
| Информация |
|---|
| На сервере должно быть установлено не менее 3ГБ оперативной памяти. |
Настройка стенда
Для правильной работы служб 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 |
Далее необходимо присвоить имена узлам выполнив на сервере:
| Command |
|---|
sudo hostnamectl set-hostname master.astra.lan |
и на агенте:
| Command |
|---|
sudo hostnamectl set-hostname agent1.astra.lan |
Если включен межсетевой экран, то необходимо разрешить коммуникации через порт 8140. Для сетевого экрана ufw:
| Command |
|---|
sudo ufw allow 8140 |
Установка Puppet
Установка PuppetServer
Для установки выполнить на сервере следующие команды:
| Command |
|---|
sudo apt update |
Указание пакета в команде установки пакета openjdk-jre-headless необходимо для того, чтобы он обновился из расширенного репозитория если был установлен ранее.
Разрешить автоматический запуск Puppet Server и запусть его:
| Command |
|---|
sudo systemctl enable puppetserver |
Проверить статус службы:
| Command | ||
|---|---|---|
| ||
| active |
Установка Puppet Agent
| Информация |
|---|
Шаги инструкции из данного раздела необходимо будет выполнить для каждого агента. |
Указать имя сервера в конфигурационном файле:
| Блок кода | ||
|---|---|---|
| ||
server = master.astra.lan show_diff = true |
Где show_diff — параметр, указывающий инструменту выводить подробную информацию об изменениях в конфигурации клиента в ходе выполнения манифестов. Параметр применяется при настройке и отладке.
Добавить службу Puppet Agent в автозагрузку и запустить её:
| Command |
|---|
| sudo systemctl enable puppet sudo systemctl start puppet |
Проверить статус службы:
| Command | ||
|---|---|---|
| ||
| active |
Подписание сертификатов агента
При первом запуске клиентская служба Puppet Agent в течении установленного времени синхронизации отправит на Puppet Server запрос на подпись сертификата. Для просмотра списка запросов на подпись сертификата выполнить на сервере следующую команду:
| Command | ||
|---|---|---|
| ||
| 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 |
В примере выше сервер сообщает, что у него имеется один запрос на подпись сертификата от клиента с именем agent1.astra.lan.
Подписать сертификат:
| Command | ||
|---|---|---|
| ||
| Successfully signed certificate request for agent1.astra.lan |
Для проверки правильности работы агента на клиентской машине после подписания сертификата можно выполнить следующие команды:
Остановить службу
Command sudo systemctl stop puppet
Выполнить тестирование работы службы, в процессе которого служба запросит и получит сертификат:
Command Title 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Повторно запустить службу:
Command sudo systemctl start puppet