Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.


Предупреждение
titleДанная статья устарела.

Для Astra Linux Common Edition 2.12.43 см. статью Установка и настройка взаимодействия связки Foreman-Puppet, Foreman-Ansible



Оглавление



Информация
titleДанная статья применима к:
  • Astra Linux Common Edition 2.12.42



Установка пакетов

Система управления конфигурациями Puppet входит в состав дистрибутивов

...

Astra Linux.
По состоянию на декабрь 2018 в состав дистрибутивов  входит версия 4.8.2.
В

...

Astra Linux Special Edition пакеты Puppet находятся на диске со средствами  разработки.

Сервер

Для установки сервера:

Command
apt install puppet-master

При установке серверного пакета puppet-master автоматически установится пакет агента puppet.
После установки сервис puppet-master должен запуститься автоматически.
Проверка установки с помощью стандартных команд:

Информация
sudo service puppet-master status

Проверка установки с помощью агента puppet:

Информация
puppet status

Клиентский компьютер

Для установки агента на клиентском компьютере выполнить команду:

Command
apt install puppet

Настройка пакетов


Предупреждение

Сервис Puppet крайне чувствителен к синхронизации времени между сервером и агентами.
Рассинхронизация даже в несколько минут может приводить к отказу в обслуживании.

Сервер

Конфигурационные файлы сервера находятся в каталоге /etc/puppet/.
К выполнению базовых действий и подключению агентов сервер puppet-master готов сразу после установки.

Файл-сервер

При установке сервера не включается автоматически сервис по передаче файлов на клиентские компьютеры.
Для его включения нужно в каталоге конфигурационных файлов создать дополнительный файл с именем fileserver.conf и с указаниями, какие файлы где расположены, например:

Информация

[kiosk]
    path /etc/puppet/kiosk
    allow *

Где:

  • kiosk - так называемая "точка монтирования", имя, по которому сценарии будут выбирать нужные пулы файлов;
  • path /etc/puppet/kiosk - путь в локальной файловой системе, указывающий каталог, который будет "примонтирован" в "точку монтирования";
  • allow * - разрешение на чтение для всех агентов;


Информация
Подробные настройки правил доступа находятся в файле /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


Агент после установки должен зарегистрироваться на сервере и получить сертификаты.
Для этого на компьютере-клиенте выполнить команду:

Command

sudo puppet agent --test --waitforcert 60


При первом запуске агент попытается связаться с сервером, получит отказ по причине отсутствия у агента сертификата доступа, и самостоятельно выпустит и отправит на сервер запрос на получение сертификата.
Необязательный ключ --waitforcert указывает агенту ждать подписанный сертификат в течение определённого времени (в данном примере  60 секунд).
Если ключ не указать, то агент попытается получить подписанный сертификат при следующем запуске.

Подписание сертификата агента

Агенты идентифицируются по полному доменному имени (FQDN). Подписание сертификата агента осуществляется на сервере. Так, для агента astra.domain.ru команда будет:

Информация
puppet cert sign astra.domain.ru

При этом полученные от агентов запросы на сертификаты автоматически сохраняются на сервере, и могут быть подписаны в любое удобное время.

Проверить список полученных запросов и сертификатов:

Информация
puppet cert list --all

Простой пример сценария

Копирование файла

Для примера рассмотрим автоматическую отправку на клиентские компьютеры индивидуальных конфигурационных файлов.

  • Имена файлов будут состоять из доменного имени клиентского компьютера;.
  • Подготовленные для передачи файлы будем размещать в каталоге /etc/puppet/kiosk/ на сервере;
  • При получении файлы будем размещать в каталоге /tmp/ на клиентском компьютере в файле с одинаковым для всех компьютеров именем kiosk.conf, т.е.  /tmp/kiosk.conf;
  • Файлы на клиентском компьютере будут иметь владельцев root:root и права доступа 600;

Настройка файлового сервера (/etc/puppet/fileserver.conf) была приведена выше:

Информация
[kiosk]
    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 - манифест "по умолчанию";

Содержимое манифеста:

Информация
class passwd {
        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 –  разовый вызов):

Информация
puppet agent --onetime

После чего в каталоге /tmp должен появиться файл /tmp/kiosk.conf

Выполнение команды на клиентском компьютере

Дополним предыдущий пример манифеста созданием архивной копии скопированного файла.

Для этого с помощью puppet выполним на клиентском компьютере команду

Command
tar cf /tmp/kiosk.conf.`date +%s`.tar /tmp/kiosk.conf

Команды выполняются агентом на клиентском компьютере с помощью клиентского shell-ла, соотвественно, в командах работают все подстановки.

Содержимое манифеста:

Информация

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