Puppet/ru

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

Installation
Puppet is provided by the package.

Currently, there is no distinction between server and client, so the basic installation procedure is the same for both.

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

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

Файл конфигурации разбит на несколько разделов, или блоков:


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

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

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

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

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

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

В течение первого запуска, 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 соответственно.

Конфигурация клиента
During the first execution of the Puppet agent, wait for the certificate to be signed by the puppetmaster. To request a certificate, and execute the first configuration run, execute:

Before the client can connect, authorize the certificate request on the server. The client should appear in the list of nodes requesting a certificate:

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

The client will check every 60 seconds whether its certificate has already been issued. After that, it continues with the first configuration run:

When this message pops up, all went well. Now check the contents of the file on the client:

OpenRC
Start the puppet agent as a deamon and have it launch on boot:

Systemd
Conversely, when running systemd:

Manually generating certificates
To manually generate a certificate, use the puppet cert</tt> utility. It will place all generated certificates into the ssldir</tt> as set in the puppet configuration and will sign them with the key of the local Puppet Certificate Authority (CA).

An easy case is the generation of a certificate with only one Common Name:

If the certificate has to be valid for multiple host names, use the --certdnsnames</tt> parameter and separate the additional host names with a colon:

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

Refreshing agent certificates
This is the process used to manually refresh agent certificates.


 * 1) (on master)
 * 2) (on agent)
 * 3) * This will cause the Puppet agent to regenerate the CSR with the existing SSL key.
 * 4) * The old certificate is no longer valid, as it was nuked on the master.
 * 5) * When one of the above steps is forgotten, an error will pop up about the certificate mis-matching between agent and master.
 * 6) * To replace the SSL keys (optional):
 * 7) (on agent)
 * 8) * When using auto-signing, no further steps are needed.
 * 9) (on master)
 * 10) Verify that the fingerprint listed in the previous two outputs matches
 * 11) (on master)
 * 12) (on agent)

Managing slots with puppet
While the default portage provider in puppet does not support slots there are puppet modules available which seek to add in this functionality.


 * puppet-portage
 * PortageGT

External resources

 * Upstream website
 * Puppet Wiki