Puppet/ru

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

Установка
Puppet предоставляется пакетом Gentoo.

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

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

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

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


 * contains settings that act as a default for all parts of Puppet, unless overridden by settings in any of the following sections:
 * is used for settings applying to the Puppetmaster, or CA tool
 * is used for settings applying to the Puppet agent

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

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

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

The snippet above sets up a share called files (remember this identifier, as it will need to be referenced later), looking for files in and only available for hosts with an IP from the 192.168.0.0/24 network. Any of the IP addresses, CIDR notation, and host names (including wildcards like ) can be used here. The deny command can be used to explicitly deny access to certain hosts or IP ranges.

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

During the first start, Puppet generates an SSL certificate for the Puppetmaster host and places it into the directory configured through the ssldir variable, as configured above.

It listens on Port, make sure that there are no firewall rules obstructing access from the clients.

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

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

Then, we have to create the main manifest file in the directory. It is called site.pp:

The default node (the name for a client) definition is used in case there is no specific node statement for the host. We use a file resource and want the file on our clients to contain the same thing as the motd file in the files</tt> share on the host. If the puppetmaster is only reachable using another host name, adapt the source</tt> URI accordingly.

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

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

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

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

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

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

Systemd
С другой стороны, при запущенном systemd:

Генерирование сертификатов вручную
To manually generate a certificate, use the utility. It will place all generated certificates into the ssldir defined directory as set in the puppet configuration and will sign them with the key of the local Puppet Certificate Authority (CA).

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

If the certificate has to be valid for multiple host names, use the  parameter and separate the additional host names with a colon:

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

Обновление сертификата у агента
Это процесс обновления сертификата у агента.


 * 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)

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


 * puppet-portage
 * PortageGT

Ссылки

 * Upstream website
 * Puppet Wiki