Установка Puppet 4 в Ubuntu 16.04
Ubuntu | Комментировать запись
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, и вы можете научиться выполнять оркестровку и планировать задачи инфраструктуры с помощью системы управления конфигурациями.
Читайте также:
- Настройка masterless окружения Puppet
- Управление нодами Puppet с помощью Foreman
- Создание манифестов Puppet