Puppet/ru

Puppet - это система управления конфигурациями, написанная на языке программирования Ruby. Она может использоваться для автоматизации развертывания системы на новых машинах.

Установка
Puppet предоставляется пакетом Gentoo. В данный момент, не существует разницы между клиентом и сервером, поэтому основная процедура установки для них одна и та же.

Для начала, установите Puppet с помощью emerge:

Конфигурация и настройка
В основном, Puppet конфигурируется через файл, написанный в стиле формата ini. Комментарии отмечены знаком решетки (#). Файл конфигурации разбит на несколько разделов, или блоков:


 * [main] содержит настройки, которые действуют по умолчанию для всех частей Puppet, до тех пор, пока они не переписываются настройками в каком-либо из следующих разделов:
 * [master] используется для настроек, касающихся Puppetmaster (puppet master), или утилиты CA (puppet cert)
 * [agent] используется для настроек, касающихся Puppet agent (puppet agent)

Более глубокое объяснение, вместе со списком дальнейших блоков, доступно в официальной документации Puppet. Также, существует список всех параметров конфигурации, некоторые из которых, конечно же, имеют смысл только тогда, когда применяются или к серверу, или к клиенту.

Настройка (Puppetmaster) сервера
Настройки по умолчанию, помещенные ebuild-файлом в могут использоваться как есть. Для Puppet 2.7.3, части, относящиеся к серверу выглядят следующим образом:

Настройка файлового сервера
Для того, чтобы отправить клиентам файлы, файловый сервер должен быть сконфигурирован в. По умолчанию, туда не включено ни одного файла.

Фрагмент выше настраивает общий ресурс с названием files</tt> (запомните этот идентификатор, так как на него будет необходимо сослаться в дальнейшем), осуществляющий поиск файлов в и доступный только для хостов сети 192.168.0.0/24. Здесь Вы можете использовать ip-адреса, бесклассовую адресацию, и имена хостов (включая шаблонные знаки, наподобие *.domain.invalid</tt>). Команда deny</tt> может использоваться для явного запрета доступа к определенным компьютерам или диапазонам IP-адресов.

Запуск демона Puppetmaster
С этой базовой конфигурацией, вместе с первоначальными настройками файлового сервера, мы можем запустить демон Puppetmaster, используя его сценарий инициализации:

В течение первого запуска, Puppet генерирует SSL сертификат для хоста Puppetmaster и размещает его в ssldir</tt>, как показано в конфигурации выше.

Он слушает порт 8140/TCP; убедитесь, что настройки межсетевого экрана не запрещают доступ клиентам.

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

В качестве простого примера, давайте создадим файл с сообщением дня (message of the day, сокращенно motd) на клиенте. На puppetmaster, создайте файл внутри общего файлового ресурса files</tt>, созданного ранее:

Затем, нам необходимо создать основной файл манифеста в каталоге manifests</tt>. Он называется site.pp</tt>:

Определение узла по умолчанию - default</tt> node (или, имя клиента), используется в случае, когда специальное объявление узла (node</tt>) отсутствует. Мы используем общий файловый ресурс и хотим, чтобы файл содержал то же самое, что и файл на общем ресурсе files</tt> на хосте puppet</tt>. Если Ваш puppetmaster доступен только через использование имени другого хоста, Вам необходимо исправить source</tt> URI соответственно.

Конфигурация клиента
В течение первого запуска Puppet agent, Вам нужно подождать, пока Ваш сертификат будет подписан puppetmaster. Для того, чтобы запросить сертификат, и выполнить Ваши первый проход конфигурации, запустите:

Перед тем, как клиент сможет соединиться, Вам необходимо авторизировать запрос сертификата на сервере. Наш клиент должен появиться в списке узлов, запрашивающих сертификат:

Теперь, мы разрешаем запрос:

Клиент будет проверять каждые 60 секунд, выпущен ли уже его сертификат. После этого, он продолжит первый проход конфигурации:

Если Вы видите это сообщение, все прошло хорошо. Тепеь Вы можете проверить содержимое Вашего файла на клиенте:

Теперь, Вы можете запустить puppet agent в качестве демона, и запускать его каждый раз при загрузке:

Генерирование сертификатов вручную
Для того, чтобы создать сертификат вручную, Вы можете использовать утилиту puppet cert</tt>. Она разместит все сгенерированные сертификаты в ssldir</tt>, так, как установлено в конфигурации puppet, и подпишет их ключом Вашего локального центра сертификации (CA).

Легким случаем является генерация сертификата с только одним именем сертификата - Common Name:

Если Вам требуются множественные имена хоста, для которых этот сертификат действителен, используйте параметр --certdnsnames</tt> и отделите дополнительные имена хоста двоеточием:

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

Управление слотами с puppet
В то время как portage provider по умолчанию не поддерживает слоты, существуют модули puppet, которые добавляют данную функциональность.
 * puppet-portage
 * PortageGT

Внешние источники

 * Upstream website
 * Puppet Wiki