Данная статья устарела.
Для Astra Linux Common Edition 2.12.43 см. статью Установка и настройка взаимодействия связки Foreman-Puppet, Foreman-Ansible
Данная статья применима к:
- Astra Linux Common Edition 2.12.42
Установка пакетов
Система управления конфигурациями Puppet входит в состав дистрибутивов Astra Linux.
По состоянию на декабрь 2018 в состав дистрибутивов входит версия 4.8.2.
В Astra Linux Special Edition пакеты Puppet находятся на диске со средствами разработки.
Сервер
Для установки сервера:
После установки сервис puppet-master должен запуститься автоматически.
Проверка установки с помощью стандартных команд:
Проверка установки с помощью агента puppet:
Клиентский компьютер
Для установки агента на клиентском компьютере выполнить команду:
Настройка пакетов
Сервис Puppet крайне чувствителен к синхронизации времени между сервером и агентами.
Рассинхронизация даже в несколько минут может приводить к отказу в обслуживании.
Сервер
Конфигурационные файлы сервера находятся в каталоге /etc/puppet/.
К выполнению базовых действий и подключению агентов сервер puppet-master готов сразу после установки.
Файл-сервер
При установке сервера не включается автоматически сервис по передаче файлов на клиентские компьютеры.
Для его включения нужно в каталоге конфигурационных файлов создать дополнительный файл с именем fileserver.conf и с указаниями, какие файлы где расположены, например:
[kiosk]
path /etc/puppet/kiosk
allow *
Где:
- kiosk - так называемая "точка монтирования", имя, по которому сценарии будут выбирать нужные пулы файлов;
- path /etc/puppet/kiosk - путь в локальной файловой системе, указывающий каталог, который будет "примонтирован" в "точку монтирования";
- allow * - разрешение на чтение для всех агентов;
Соответственно, нужно создать каталог /etc/puppet/kiosk/ и разместить в нём файлы для передачи.
См. пример ниже.
Клиентский компьютер
Конфигурационные файлы агента находятся в каталоге /etc/puppet/ на клиентском компьютере.
(Агент, установленный на сервере, имеет конфигурационный файл общий с сервером).
При установке агент автоматически устанавливается как сервис, однако автоматически не запускается, так как агенту нужно указать, где именно находится сервер.
Если в сети настроен DNS, умеющий правильно разрешать имя сервера, то никаких настроек не понадобится, агент автоматически запустится как сервис после перезагрузки компьютера.
Имя сервера также можно указать, добавив адрес сервера в файл /etc/hosts.
Имя сервера по умолчанию puppet и задается в конфигурационном файле /etc/puppet/puppet.conf:
Соответственно, в файл /etc/hosts можно добавить строчку с адресом сервера вида
Агент после установки должен зарегистрироваться на сервере и получить сертификаты.
Для этого на компьютере-клиенте выполнить команду:
При первом запуске агент попытается связаться с сервером, получит отказ по причине отсутствия у агента сертификата доступа, и самостоятельно выпустит и отправит на сервер запрос на получение сертификата.
Необязательный ключ --waitforcert указывает агенту ждать подписанный сертификат в течение определённого времени (в данном примере 60 секунд).
Если ключ не указать, то агент попытается получить подписанный сертификат при следующем запуске.
Подписание сертификата агента
Агенты идентифицируются по полному доменному имени (FQDN). Подписание сертификата агента осуществляется на сервере. Так, для агента astra.domain.ru команда будет:
При этом полученные от агентов запросы на сертификаты автоматически сохраняются на сервере, и могут быть подписаны в любое удобное время.
Проверить список полученных запросов и сертификатов:
Простой пример сценария
Копирование файла
Для примера рассмотрим автоматическую отправку на клиентские компьютеры индивидуальных конфигурационных файлов.
- Имена файлов будут состоять из доменного имени клиентского компьютера;.
- Подготовленные для передачи файлы будем размещать в каталоге /etc/puppet/kiosk/ на сервере;
- При получении файлы будем размещать в каталоге /tmp/ на клиентском компьютере в файле с одинаковым для всех компьютеров именем kiosk.conf, т.е. /tmp/kiosk.conf;
- Файлы на клиентском компьютере будут иметь владельцев root:root и права доступа 600;
Настройка файлового сервера (/etc/puppet/fileserver.conf) была приведена выше:
path /etc/puppet/kiosk
allow *
Сценарий действий (в терминах puppet - манифест) поместим в каталог на сервере /etc/puppet/code/environments/production/manifests/site.pp.
Подробно про размещение манифеста:
- каталог /etc/puppet/code - общий каталог для размещения данных для клиентов;
- каталог /etc/puppet/code/environments - каталог для размещения данных в зависимости от выбранного параметра "environment";
- каталог /etc/puppet/code/environments/production - каталог для размещения данных для значения параметра "environment" равного "production" (значение по умолчанию);
- каталог /etc/puppet/code/environments/production/manifests - каталог для размещения манифестов
- файл /etc/puppet/code/environments/production/manifests/site.pp - манифест "по умолчанию";
Содержимое манифеста:
file { "/tmp/kiosk.conf":
owner => root,
group => root,
mode => "600",
source => "puppet:///kiosk/${fqdn}"
}
}
node default {
include passwd
}
- /tmp/kiosk.conf - целевой файл на компьютере клиента;
- owner, group, mode - атрибуты целевого файла;
- puppet:///kiosk/${fqdn} - путь к файлу-источнику, где
- kiosk - "точка монтирования" (см. настройку файл-сервера);
- ${fqdn} - предопределённая переменная, вместо которой будет подставлено FQDN клиентского компьютера, приславшего запрос.
Далее, создаём в каталоге на сервере /etc/puppet/kiosk файл с соответствующим именем (например, astra.domain.ru).
И вызываем на клиентском компьютере агента для проверки (опции --verbose и --debug включают отладочную диагностику):
puppet agent --test --verbose --debug
Если всё в порядке - вызываем агента для исполнения (опция --onetime – разовый вызов):
После чего в каталоге /tmp должен появиться файл /tmp/kiosk.conf
Выполнение команды на клиентском компьютере
Дополним предыдущий пример манифеста созданием архивной копии скопированного файла.
Для этого с помощью puppet выполним на клиентском компьютере команду
Содержимое манифеста:
class passwd {
file { "/tmp/kiosk.conf":
owner => root,
group => root,
mode => "600",
source => "puppet:///kiosk/${fqdn}"
}
exec { 'tar cf /tmp/kiosk.conf.`date +%s`.tar /tmp/kiosk.conf':
cwd => '/tmp',
path => ['/bin','/usr/bin'],
}
}
node default {
include passwd
}
Документация
Подробная документация по системе puppet доступна по ссылке: Документация Puppet 4.8