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 или написать свой модуль для управления окружением.