Установка и настройка puppet

В данной и, скорее всего, последующих заметках пойдёт речь о настройке сервера конфигурации puppet.

Содержание:

Установка и настройка сервера

Установка и настройка клиента

Подпись сертификатов

Тестирование

Все действия я провожу на двух виртуальных машинах VirtualBox, на которых установлена ОС Debian GNU/Linux 7. Сервер puppet будет установлен на машину puppet-srv, ip 192.168.100.170, а клиент puppet на машину puppet-client1, ip 192.168.100.171. 

Перед установкой рекомендую ещё раз проверить имя сервера и в случае необходимости поменять его (/etc/hostname). Общение клиента и сервера будет осуществляться по https, поэтому при установке puppet сгенерирует сертификаты безопасности, привязанные к доменному имени. Смена доменного имени не критична, но процедуру генерации и подписи сертификатов в таком случае придётся повторить.

Ниже пойдёт базовая настройка, одинаковая для сервера и клиента.

Скачиваем и устанавливаем пакет puppetlabs-release (в моём случае для wheezy), который подключит репозиторий PuppetLabs:

cd /tmp/; wget http://apt.puppetlabs.com/puppetlabs-release-wheezy.deb
sudo dpkg -i ./puppetlabs-release-wheezy.deb
sudo aptitude update

 

Установка и настройка сервера

Официальное руководство рекомендует нам установить пакет puppetmaster-passenger, который установит сам puppet, его зависимости, а также сконфигурирует веб-сервер:

sudo aptitude install puppetmaster-passenger

В конфигурационном файле /etc/puppet/puppet.conf необходимо удалить устаревшую опцию templatedir в секции [main].

Установщик сам сгенерирует и подпишет сертификаты, их я оставлю как есть. Перечень сертификатов можно посмотреть следующей командой:

sudo puppet cert list -all
+ "puppet-srv" (SHA256) D6:39:FC:70:E8:8E:AD:F0:93:6C:7A:89:D6:0F:97:D3:56:B9:9C:80:F1:64:03:01:F6:49:56:70:3C:E0:87:86

На данном этапе должен быть виден один сертификат самого сервера.

 

Установка и настройка клиента

Устанавливаем клиент puppet:

sudo aptitude install puppet

Далее необходимо убедиться в том, что master-сервер доступен по своему доменному имени и если это не так поправить DNS-записи на DNS-сервере или в /etc/hosts:

192.168.100.170   puppet-srv

Прописываем адрес нашего puppet-сервера (дописываем в конец /etc/puppet/puppet.conf), полностью удаляем секцию [master], а также опцию templatedir из секции [main]:

[agent]
server=puppet-srv

Прописываем возможность запуска демона puppet в файле /etc/default/puppet:

START=yes

Теперь puppet может быть запущен:

sudo /etc/init.d/puppet start

 

Подпись сертификатов

После первого запуска puppet создаст сертификат и отправит его на puppet-сервер (в каталогe /var/lib/puppet/ssl/ca/requests будет лежать файлик puppet-client1.pem). Проверить наличие сертификатов, запрашивающих доступ можно с помощью команды:

sudo puppet cert list
  "puppet-client1" (SHA256) 54:5D:05:C2:28:EB:F3:BD:C3:6E:8F:D1:DA:49:AB:59:D5:36:FF:05:1D:F8:A1:08:0E:B1:9C:59:FF:1C:27:C6

А подписать с помощью команды:

sudo puppet cert sign puppet-client1
Notice: Signed certificate request for puppet-client1
Notice: Removing file Puppet::SSL::CertificateRequest puppet-client1 at '/var/lib/puppet/ssl/ca/requests/puppet-client1.pem'

Как мы видим сертификат был подписан и удалён из каталога запросов.

Подписать все запрашиваемые сертификаты можно с помощью команды:

sudo puppet cert sign --all

А удалить подпись для определённого хоста можно так:

sudo puppet cert clean hostname

 

Тестирование

Для описания конфигураций puppet использует доменно-специфичный язык. Конфигурации хранятся в каталогах, называемых manifest в файлах с расширением .pp. Манифест по умолчанию расположен в файле /etc/puppet/manifests/site.pp и является общим для всех управляемых серверов:

sudo touch /etc/puppet/manifests/site.pp

В качестве теста пропишем в него правило, проверяющее права на доступ к файлу /etc/passwd (пример из статьи на Хабрахабр):

file { "/etc/passwd": owner => "root", group => "bin", mode => 644, }

Клиент puppet синхронизирует с сервером данные о своей конфигурации каждые 30 минут. Для немедленного запуска puppet на клиенте выполним команду:

sudo puppet agent --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppet-client1
Info: Applying configuration version '1406889092'
Notice: Finished catalog run in 0.01 seconds

Было инициировано обращение puppet-client1 к puppet-srv, получен главный манифест (тот, который site.pp), а также попытка получить набор правил для сервера puppet-client1, который сейчас отсутствует. Применена конфигурация определённой версии. Напомню, что наш набор правил проверяет права доступа к файлу /etc/passwd.

Сменим разрешения для этого файла:

ls -la /etc/passwd
-rw-r--r-- 1 root bin 897 Авг  1 13:19 /etc/passwd
sudo chmod 777 /etc/passwd
ls -la /etc/passwd
-rwxrwxrwx 1 root bin 897 Авг  1 13:19 /etc/passwd

Теперь запустим puppet ещё раз:

sudo puppet agent --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppet-client1
Info: Applying configuration version '1406889092'
Notice: /Stage[main]/Main/File[/etc/passwd]/mode: mode changed '0777' to '0644'
Notice: Finished catalog run in 0.02 seconds

Puppet уведомил нас, что разрешения на файле /etc/passwd были изменены с 777 на 644.

 

Использованные источники:

  1. Puppet, система управления конфигурациями. Часть II

  2. How To Install Puppet To Manage Your Server Infrastructure

 

Добавлено: 2015-04-07, обновлено: 2015-04-14


Поделиться:

Оставить комментарий

Комментарий появится после одобрения.

Поля со значком * обязательны для заполнения.