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