Содержание

Перейти к концу метаданных
Переход к началу метаданных

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

Система управления конфигурациями Puppet входит в состав дистрибутивов ОС ОН Орёл 2.12 и ОС СН Смоленск 1.6.
По состоянию на декабрь 2018 в состав дистрибутивов  входит версия 4.8.2.

Сервер

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

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]
    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


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

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 выполним на клиентском компьютере команду

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


  • Нет меток