Установка Puppet 4 в Ubuntu 16.04

Published by Leave your thoughts

Puppet – это система управления конфигурациями, которая позволяет автоматизировать оркестровку, настройку и управление инфраструктурой серверов. Планирование задач и использование Puppet и подобных систем помогает автоматизировать базовые процессы и настройку инфраструктуры.

Существует две версии Puppet: Puppet Enterprise (коммерческая версия) и Puppet с открытым исходным кодом. Обе они поддерживаются большинством дистрибутивов Linux, платформами UNIX и Windows.

Данное руководство поможет установить открытую версию Puppet 4 (мастер и агент) в Ubuntu 16.04. Мастер-сервер Puppet использует программное обеспечение Puppet Server. Этот сервер управляет нодами инфраструктуры, которые используют программу Puppet agent.

Требования

  • Три сервера Ubuntu 16.04 (инструкции по начальной настройке можно найти здесь).
  • Пользователь с доступом к sudo на каждом сервере.

Один из серверов будет использоваться в качестве ведущего сервера (мастер-сервера) Puppet. На этот сервер нужно установить Puppet Server. Для работы нужны такие ресурсы:

  • Минимум 4 Гб памяти.
  • Минимум 2 ядра CPU.

Чем больше инфраструктура, тем больше ресурсов нужно мастеру, чтобы управлять ей.

Остальные два сервера будут нодами, ведущими серверами инфраструктуры. В руководстве они условно называются db1 и web1.

1: Настойка /etc/hosts

Мастер и ноды Puppet должны иметь возможность взаимодействовать друг с другом. Обычно это делается через DNS (подойдет внешний или собственный DNS-сервер, поддерживаемый в рамках инфраструктуры).

Однако настройка DNS требует много времени и внимания. Чтобы сосредоточиться на Puppet и исключить некоторые потенциальные неисправности, в этом руководстве вместо DNS используется файл /etc/hosts.

Примечание: Выполните следующие действия на каждой машине.

Отредактируйте файл /etc/hosts. В конце файла укажите IP мастер-сервера Puppet.

sudo nano /etc/hosts
. . .
puppet_ip_address    puppet
. . .

Сохраните и закройте файл.

Примечание: По умолчанию агенты Puppet ищут в этом файле мастер Puppet, чтобы получить доступ к его настройкам. Потому в /etc/hosts этот сервер обязательно должен называться puppet. В противном случае агенты не смогут взаимодействовать с мастером без дополнительных настроек.

2: Установка мастер-сервера Puppet

Puppet Server – это программа, которая отвечает за работу мастер-сервера Puppet.

Примечание: Многим системным администраторам необходимо использовать одну версию Puppet в нескольких системах. В таком случае можно обратиться к репозиторию Puppet Labs.

Чтобы включить репозиторий Puppet Labs, введите:

curl -O https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

Теперь можно установить пакет puppetserver из Puppet Labs:

sudo apt-get install puppetserver

Чтобы продолжить, нажмите Y.

Прежде чем запустить сервер, нужно настроить использование памяти.

Распределение памяти

По умолчанию мастер Puppet использует 2 Гб RAM. В зависимости от объёма свободной памяти и количества нод в инфраструктуре вы можете изменить эту настройку.

Для этого откройте /etc/default/puppetserver:

sudo nano /etc/default/puppetserver

Найдите строку JAVA_ARGS и используйте параметры -Xms и –Xmx, чтобы настроить распределение памяти. К примеру, чтобы увеличить объем доступной памяти до 3 Гб:

JAVA_ARGS="-Xms3g -Xmx3g -XX:MaxPermSize=256m"

Сохраните и закройте файл.

Настройка брандмауэра

Puppet Server использует порт 8140. Откройте его в брандмауэре.

sudo ufw allow 8140

Запуск мастера Puppet

Чтобы запустить Puppet, используйте команду systemctl:

sudo systemctl start puppetserver

Запуск займёт некоторое время.

После завершения процесса вы получите доступ к командной строке. Чтобы убедиться, что запуск сервера прошёл успешно, введите:

sudo systemctl status puppetserver

Команда должна вернуть статус active (running). Последняя строка вывода выглядит так:

Dec 07 16:27:33 puppet systemd[1]: Started puppetserver Service.

Теперь можно настроить автозапуск сервера:

sudo systemctl enable puppetserver

Мастер готов к работе. Теперь нужно настроить ноды, db1 и web1

3: Установка агентов Puppet

Puppet Agent нужно установить на каждую ноду, которая должна подчиняться мастеру Puppet.

Примечание: Puppet Agent поддерживается всеми основными дистрибутивами Linux, некоторыми платформами UNIX и Windows. Инструкции по установке индивидуальны для каждой операционной системы. Установка Puppet в CentOS описана здесь. Больше информации по установке Puppet можно найти на сайте проекта.

Добавление репозитория Puppet Labs

Сначала нужно включить репозиторий Puppet Labs:

wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

Установка Puppet Agent

Установите пакет puppet-agent:

sudo apt-get install puppet-agent

Запустите агент и включите его автозапуск:

sudo systemctl start puppet
sudo systemctl enable puppet

Повторите эти действия на второй ноде, web1:

wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update
sudo apt-get install puppet-agent
sudo systemctl enable puppet
sudo systemctl start puppet

4: Подпись сертификатов агентов Puppet

После первого запуска агент Puppet отправляет мастеру запрос на подпись сертификата. Прежде чем подключиться к ноде, мастер должен подписать этот сертификат.

Просмотр текущих сертификатов

Чтобы просмотреть все неподписанные сертификаты, запустите команду:

sudo /opt/puppetlabs/bin/puppet cert list

На данный момент у вас должно быть два запроса на подпись – по одному от каждой ноды.

"db1.localdomain"  (SHA256) 46:19:79:3F:70:19:0A:FB:DA:3D:C8:74:47:EF:C8:B0:05:8A:06:50:2B:40:B3:B9:26:35:F6:96:17:85:5E:7C
"web1.localdomain" (SHA256) 9D:49:DE:46:1C:0F:40:19:9B:55:FC:97:69:E9:2B:C4:93:D8:A6:3C:B8:AB:CB:DD:E6:F5:A0:9C:37:C8:66:A0

Если сертификат подписан, в начале строки будет +. Если символа + нет, значит, сертификат нужно подписать.

Запросы на подпись

Чтобы подписать сертификат, используйте команду puppet cert sign. В команде нужно указать имя хоста сертификата, которое можно найти в запросе на подпись.

К примеру, чтобы подписать сертификат db1, нужно ввести:

sudo /opt/puppetlabs/bin/puppet cert sign db1.localdomain

Команда вернёт примерно такой вывод:

Notice: Signed certificate request for db.localdomain
Notice: Removing file Puppet::SSL::CertificateRequest db1.localdomain at '/etc/puppetlabs/puppet/ssl/ca/requests/db1.localdomain.pem'

Теперь мастер Puppet может взаимодействовать с нодой, которой принадлежит подписанный сертификат.

Чтобы подписать все запросы на подпись, добавьте в команду флаг —all:

sudo /opt/puppetlabs/bin/puppet cert sign --all

Теперь все сертификаты подписаны. Мастер может управлять инфраструктурой.

Читайте такжеУправление сертификатами Puppet 4

5: Тестирование установки

Для описания настроек системы или программы Puppet использует так называемые манифесты (файлы с расширением .pp).

Читайте также: Создание манифестов Puppet

Создайте манифест по умолчанию, site.pp, в стандартном каталоге:

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

С помощью языка Puppet создайте файл it_works.txt на ноде в каталоге tmp. Файл будет содержать IP-адрес ноды и устанавливать права -rw-r—r—:

file {'/tmp/it_works.txt':                        # resource type file and filename
ensure  => present,                             # make sure it exists
mode    => '0644',                              # file permissions
content => "It works on ${ipaddress_eth0}!\n",  # Print the eth0 IP fact
}

По умолчанию Puppet Server запускает команды из манифестов каждые 30 минут. Если файл будет удалён, директива ensure восстановит его. Директива mode устанавливает права на файл, а content позволяет добавить текст.

Манифест можно протестировать на одной ноде с помощью команды puppet agent —test.

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

sudo /opt/puppetlabs/bin/puppet agent --test

Команда должна вернуть примерно такой вывод:

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for db1.localdomain
Info: Applying configuration version '1481131595'
Notice: /Stage[main]/Main/File[/tmp/it_works.txt]/ensure: defined content as '{md5}acfb1c7d032ed53c7638e9ed5e8173b0'
Notice: Applied catalog in 0.03 seconds

Проверьте содержимое файла:

cat /tmp/it_works.txt
It works on 203.0.113.0!

Повторите эти действия, чтобы проверить работу второй ноды, web1. Также вы можете подождать 30 минут и убедиться, что мастер может читать манифесты.

Примечание: Проверьте лог-файл мастера Puppet и узнайте, когда сервер Puppet в последний раз компилировал каталог для агента. Если каталог скомпилирован, значит, все необходимые изменения были внесены в настройки агента.

. . .
2016-12-07 17:35:00,913 INFO  [qtp273795958-70] [puppetserver] Puppet Caching node for web1.localdomain
2016-12-07 17:35:02,804 INFO  [qtp273795958-68] [puppetserver] Puppet Caching node for web1.localdomain
2016-12-07 17:35:02,965 INFO  [qtp273795958-68] [puppetserver] Puppet Compiled catalog for web1.localdomain in environment production in 0.13 seconds
. . .

Установка Puppet в режиме мастер-агент успешно завершена!

Заключение

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

Читайте также:

Tags: , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>