Управление нодами Puppet с помощью Foreman в Ubuntu 14.04

Foreman – это открытый инструмент для простого взаимодействия с Puppet (или Chef), позволяющий автоматизировать выполнение задач и развёртывание приложений. Foreman – надёжный пользовательский интерфейс, API и CLI, позволяющий выполнять настройку и мониторинг серверов. Он подходит инфраструктурам любых масштабов и работает на большинстве дистрибутивов Linux.

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

Требования

В данном руководстве Foreman и мастер- сервер Puppet будут установлены на один чистый сервер. Если у вас уже есть мастер-сервер Puppet, можете просто установить на него Foreman, но имейте в виду: при этом будет переписан стандартный файл site.pp, что может привести к потере контроля над нодами.

Foreman зависит от Puppet в управлении конфигурациями хостов, потому для работы Foreman необходима полноценная настройка Puppet типа агент-мастер.

Для выполнения руководства необходимы:

  • Привилегии sudo.
  • DNS частной сети; каждый сервер должен иметь уникальное имя хоста. Если у вас нет DNS, используйте файл hosts для разрешения имён.
  • Открытые порты брандмауэра; мастер-сервер Puppet должен быть доступен на порт 8140. За справкой можно обратиться к этому руководству.

1: Создание сервера Foreman

Создайте сервер Ubuntu 14.04 x64 сименм хоста foreman.nyc2.example.com. Добавьте его частную сеть на DNS:

Hostname: foreman
Role: Foreman / Puppet Master
Private FQDN: foreman.nyc2.example.com

Добавьте записи А и PTR и разрешите новому хосту выполнять рекурсивные запросы. Также нужно настроить использование коротких имен хостов.

Свяжите имя хоста и полное доменное имя.

Чтобы узнать полное имя хоста, введите:

hostname -f

Эта команда вернёт полное имя хоста (например, foreman.nyc2.example.com). Если это так, вы можете переходить к следующему разделу.

Если команда вернула короткое имя хоста (например, foreman), нужно настроить имя. Откройте файл hosts:

sudo vi /etc/hosts

Найдите первую запись для короткого имени хоста и добавьте в нее FQDN. Например:

127.0.1.1       foreman

нужно изменить на:

127.0.1.1       foreman.nyc2.example.com foreman

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

Затем отредактируйте файл hostname:

sudo vi /etc/hostname

Замените запись в файле своим FQDN (например, foreman.nyc2.example.com). Сохраните и закройте файл.

Запустите следующую команду, чтобы обновить параметры:

sudo hostname --file /etc/hostname

2: Установка Foreman

Проще всего установить Foreman при помощи инсталлятора. Foreman Installer устанавливает и настраивает все необходимые компоненты Foreman,  включая:

  • Собственно Foreman.
  • Мастер и агент Puppet.
  • Веб-сервер Apache с поддержкой SSL и модулем Passenger.

Загрузите Foreman Installer:

sudo sh -c 'echo "deb http://deb.theforeman.org/ trusty 1.5" > /etc/apt/sources.list.d/foreman.list'
sudo sh -c 'echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list'
wget -q http://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -
sudo apt-get update && sudo apt-get install foreman-installer

Затем запустите Foreman Installer:

sudo foreman-installer

Команда вернёт:

Your puppet version does not support progress bar
Preparing installation Done
Success!
* Foreman is running at https://foreman.nyc2.example.com
Default credentials are 'admin:changeme'
* Foreman Proxy is running at https://foreman.nyc2.example.com:8443
* Puppetmaster is running at port 8140
The full log is at /var/log/foreman-installer/foreman-installer.log

Если вы получили такое сообщение, установка компонентов прошла успешно!

Включение diffs

Теперь нужно настроить поддержку diffs. Эта функция отображает изменения в конфигурациях в отчётах Foreman.

Отредактируйте puppet.conf:

sudo vi /etc/puppet/puppet.conf

Найдите строку show_diff и установите значение true:

show_diff     = true

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

Добавление хоста Foreman в базу данных

Чтобы добавить хост в БД Foreman, запустите:

sudo puppet agent --test

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

3: Веб-интерфейс Foreman

Откройте интерфейс Foreman и измените пароль администратора. Доступ к веб-интерфейсу можно получить по FQDN или внешнему IP-адресу.

Откройте Infrastructure → Smart proxies.

По умолчанию Foreman использует сертификаты Puppet, которым браузеры, как правило, не доверяют. Примите предупреждение о ненадёжности сертификата, чтобы продолжить. Вы можете заменить такой сертификат другим сертификатом, подписанным у надёжного ЦС. После принятия сертификата на экране появится страница входа.

foreman-предоставляет стандартные учётные данные:

  • Username: admin
  • Password: changeme

Панель инструментов Foreman

Предоставив учётные данные, вы получите доступ к панели инструментов Foreman,которая отображает общие сведения об окружении Puppet. Здесь можно найти резюме Host Configuration Status, которое сообщает количество нод агентов Puppet и их состояние. При первом запуске Foreman будет один сервер в разделе good host.

Ниже будет приведено резюме последних событий и график, отображающий количество клиентов, запустивших Puppet за последние 30 минут.

4: Изменение пароля

Измените пароль пользователя admin. Для этого кликните Admin User → My Account.

Найдите форму Password и укажите в ней новый пароль.

5: Добавление модуля NTP

Puppet требует точного времени, потому рекомендуется с помощью Foreman настроить сервис NTP (на хосте Foreman, который также является мастер-сервером Puppet).

В браузере откройте ссылку:

https://forge.puppetlabs.com/

Найдите модуль NTP, он должен называться puppetlabs/ntp. Чтобы получить информацию о модуле, кликните по нему.

Установите модуль в среду производства мастер-сервера Puppet.

sudo puppet module install -i /etc/puppet/environments/production/modules puppetlabs/ntp

На экране появится такой вывод:

Notice: Preparing to install into /etc/puppet/environments/production/modules ...
Notice: Downloading from https://forge.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/environments/production/modules
└─┬ puppetlabs-ntp (v3.1.2)
..└── puppetlabs-stdlib (v4.3.2)

Модуль был установлен на мастер Puppet, но его ещё нужно добавить в Foreman, прежде чем использовать его.

В веб-интерфейсе Foreman кликните Configure → Puppet classes → Import from foreman.nyc2.example.com. Поставьте флажок рядом с объектом и нажмите Update. После этого модуль ntp будет импортирован в Foreman.

6: Настройка хоста Foreman для использования модуля NTP

Нажмите Hosts → All Hosts → Edit.

Откройте вкладку Puppet Classes. Найдите Available Classes, кликните по ntp, чтобы развернуть, а затем нажмите плюсик, чтобы добавить модуль.

Это переместит класс ntp в Included Classes. Теперь агент Puppet хоста Foreman использует этот модуль.

Чтобы обновить настройки, нажмите Submit.

7: Просмотр настроек Puppet

После редактирования настроек хоста Foreman вы будете перенаправлены на страницу сводки.

Чтобы просмотреть данные, переданные Puppet при проверке настроек, нажмите кнопку YAML.

На экране появится страница с примерно таким содержанием:

---
classes:
ntp:
server_list:
- 0.us.pool.ntp.org
- 1.us.pool.ntp.org
- 2.us.pool.ntp.org
- 3.us.pool.ntp.org
parameters:
puppetmaster: foreman.nyc2.example.com
root_pw:
foreman_env: production
owner_name: Admin User
owner_email: root@nyc2.example.com
environment: production

8: Запуск агента Puppet

На сервере Foreman запустите агент Puppet:

sudo puppet agent --test

В веб-интерфейсе нажмите Reports. На экране появится новый отчёт, сообщающий о некоторых изменениях конфигурации. Кликните по отчету, и вы увидите несколько уведомлений об установке, настройке и перезапуске пакета NTP.

Кликните ссылку View Diff рядом с ntp.conf/content. Это позволит вам просмотреть, как Puppet изменяет конфигурационные файлы, которыми управляет.

9: Добавление новых хостов в Foreman

Теперь можно добавить несколько хостов, которыми будет управлять Foreman. Процесс добавления новых хостов тот же, что и при добавлении новых нод агента на мастер-сервер Puppet.

После добавления агента нужно подписать его сертификат на сервере Foreman. Это можно сделать в командной строке или с помощью интерфейса Foreman.

Чтобы подписать сертификат с помощью интерфейса, нажмите Infrastructure → Smart Proxies → Certificates. Здесь находятся все сертификаты PuppetCA. Чтобы подписать сертификат, нажмите Sign рядом с новым хостом.

Заключение

Теперь инструмент Foreman полностью готов к работе. Он позволяет управлять модулями Puppet и инфраструктурой сервера. Можно добавить новые модули Puppet или написать свой модуль для управления окружением.

Tags: , , ,

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