Как использовать Foreman для управления узлами Puppet в Ubuntu 14.04
Введение
Foreman — это инструмент с открытым исходным кодом, который может помочь в управлении серверами, предоставляя простой способ взаимодействия с Puppet (или Chef) для автоматизации задач и развертывания приложений. Foreman предоставляет надежный веб-интерфейс пользователя, API и CLI, которые можно использовать для предоставления, настройки и мониторинга ваших серверов. Он подходит для инфраструктур любого размера и работает с большинством дистрибутивов Linux.
В этом руководстве мы покажем вам, как установить Foreman с Puppet и начать использовать его для управления вашими серверами. Мы будем использовать Foreman для создания отчетов и возможностей классификатора внешних узлов (ENC), чтобы упростить управление Puppet.
Предпосылки
В этом руководстве предполагается, что вы установите Foreman на новый сервер, который также будет выступать в качестве главного сервера Puppet. Если у вас уже есть главный сервер Puppet, вы можете установить на него Foreman, но имейте в виду, что ваш site.pp
по умолчанию будет перезаписан (ваши существующие узлы агента Puppet останутся в неуправляемом ). state), и вам нужно будет настроить Foreman для управления существующими узлами агента Puppet.
Поскольку Foreman зависит от Puppet для управления конфигурацией хостов, ему требуется все необходимое для настройки агента/мастера Puppet. Следующий список охватывает то, что вам понадобится перед началом этого урока:
- Корневой доступ:
sudo
доступ ко всем серверам, которыми вы хотите управлять - Частный сетевой DNS: должны быть настроены прямой и обратный DNS, и каждый сервер должен иметь уникальное имя хоста. Вот руководство по настройке собственного DNS-сервера в частной сети. Если у вас не настроен DNS, вы должны использовать файл hosts для разрешения имен. Мы предполагаем, что вы будете использовать свою частную сеть для связи внутри вашей инфраструктуры.
- Открытые порты брандмауэра. Мастер Puppet должен быть доступен через порт 8140. Если ваш брандмауэр слишком ограничивает ограничения, ознакомьтесь с этим руководством по UFW, чтобы узнать, как разрешить входящие запросы через порт 8140.
Когда у вас есть все необходимые условия, давайте перейдем к созданию сервера Foreman (и Puppet master)!
Создать сервер мастеров
Создайте новый сервер Ubuntu 14.04 x64, используя \foreman.nyc2.example.com в качестве имени хоста. Добавьте его частную сеть в свой DNS со следующими данными:
Hostname | Role | Private FQDN |
---|---|---|
foreman | Foreman / Puppet Master | foreman.nyc2.example.com |
Если вы только что настроили свой DNS и не знаете, как добавить свой хост в DNS, обратитесь к разделу Ведение записей DNS в руководстве по DNS. По сути, вам нужно добавить запись \A и \PTR и разрешить новому хосту выполнять рекурсивные запросы. Кроме того, убедитесь, что вы настроили свой поисковый домен, чтобы ваши серверы могли использовать короткие имена хостов для поиска друг друга.
Убедитесь, что для имени хоста установлено полное доменное имя
Чтобы проверить полное имя хоста вашего сервера, введите следующую команду:
hostname -f
Вы должны увидеть длинную версию имени вашего сервера, например \foreman.nyc2.example.com. Если в качестве имени хоста указано ваше полное доменное имя, вы можете перейти к следующему разделу.
В противном случае, если возвращается короткое имя, например. \foreman, вам нужно установить длинное имя хоста. Для этого отредактируйте файл hosts
:
sudo vi /etc/hosts
Найдите первую запись для вашего короткого имени хоста и добавьте перед ней полное доменное имя. Например:
127.0.1.1 foreman
Следует изменить на:
127.0.1.1 foreman.nyc2.example.com foreman
Затем сохраните и выйдите.
Затем отредактируйте файл hostname
:
sudo vi /etc/hostname
Измените запись в файле на полное доменное имя вашего сервера, например. \foreman.nyc2.example.com. Затем сохраните и выйдите.
Затем выполните следующую команду, чтобы немедленно прочитать изменения конфигурации, которые вы только что сделали:
sudo hostname --file /etc/hostname
Ваше длинное имя хоста установлено. Продолжить установку Формана!
Установить Формана
Самый простой способ установить Foreman — использовать установщик Foreman. Программа установки Foreman устанавливает и настраивает все необходимые компоненты для запуска Foreman, включая следующие:
- Мастер
- Хозяин марионеток и агент
- Веб-сервер Apache с модулем SSL и Passenger
Загрузите установщик Foreman с помощью следующих команд:
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 с помощью следующей команды:
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
Если ваш вывод похож на приведенный выше, Foreman и его необходимые компоненты установлены!
Включить различия
Прежде чем продолжить, мы внесем небольшое изменение в конфигурацию, чтобы включить «diffs». Это изменение позволит вам просматривать различия, что позволит вам видеть изменения файла конфигурации из представления отчетов Foreman.
Отредактируйте puppet.conf
:
sudo vi /etc/puppet/puppet.conf
Найдите строку, которая устанавливает show_diff
, и измените ее значение на true
:
show_diff = true
Сохранить и выйти.
Добавить хост Foreman в базу данных Foreman
Чтобы добавить хост Foreman в базу данных Foreman, запустив команду puppet agent
следующим образом:
sudo puppet agent --test
Это добавляет хост Foreman в качестве первого узла агента Puppet, которым управляет Foreman.
Войдите в веб-интерфейс Foreman
Войдите в Foreman и измените пароль администратора. Доступ к веб-интерфейсу Foreman можно получить через общедоступный сетевой интерфейс вашего VPS (либо его общедоступное полное доменное имя, либо общедоступный IP-адрес).
По умолчанию Foreman использует ваши сертификаты Puppet, которым, вероятно, не доверяет ваш браузер. Примите предупреждение о сертификате и продолжите. Кроме того, вы можете заменить сертификат сертификатом, который соответствует имени вашего домена и подписан доверенным центром сертификации. После того, как вы примете сертификат и продолжите, вы увидите следующую страницу входа:
Как вы могли заметить при запуске foreman-installer
, это учетные данные по умолчанию:
- Имя пользователя: admin
- Пароль: сменить меня
Панель управления мастером
При первом входе в систему вы увидите панель инструментов Foreman, которая показывает обзор вашей среды Puppet. Здесь вы увидите сводку «Статус конфигурации хоста», которая показывает количество узлов агента Puppet и их соответствующие статусы. При первом запуске Foreman вы должны увидеть один сервер в разделе «хороший хост»:
Ниже вы увидите сводку последних событий и график с количеством «клиентов», которые выполнили задание Puppet за последние 30 минут. Эта информация может помочь вам понять, как работает ваша общая настройка Puppet. .
Изменить пароль администратора
Прежде чем делать что-либо еще, вам нужно изменить свой пароль пользователя admin
. Для этого наведите указатель мыши на элемент Администратор в правом верхнем углу и нажмите Моя учетная запись:
Найдите форму Пароль. Обновите свой пароль до безопасного, затем нажмите «Отправить».
Добавить модуль NTP к мастеру
Puppet требует точного учета времени, поэтому мы будем использовать Foreman для управления службой NTP на хосте Foreman (который также является мастером Puppet).
В веб-браузере перейдите на https://forge.puppetlabs.com/. Найдите модуль NTP. Первым результатом должен быть puppetlabs/ntp
. Нажмите на модуль и прочитайте о нем, чтобы увидеть, что он делает.
Теперь мы установим его в среде Production нашего мастера 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 наведите указатель мыши на Настроить, затем нажмите Классы Puppet:
Нажмите кнопку Импортировать с foreman.nyc2.example.com. Затем вы увидите экран, который выглядит следующим образом:
Установите флажок рядом с элементом и нажмите кнопку Обновить. Теперь модуль ntp импортирован в Foreman и готов к использованию с хостом.
Переопределить пул NTP по умолчанию
Теперь мы хотим переопределить настройки модуля NTP по умолчанию и настроить модуль NTP на использование пула NTP США по умолчанию. Не стесняйтесь искать пул NTP по вашему выбору в проекте пула NTP.
Вы должны оказаться на экране «Классы марионеток». Щелкните класс «ntp», чтобы войти в режим редактирования. Теперь нажмите на вкладку «Параметры умного класса».
Прокрутите вниз, найдите элемент «серверы» на левой боковой панели и выберите его:
Найдите и установите флажок \Переопределить. Измените раскрывающийся список Тип параметра на \массив. Затем измените «Значение по умолчанию» с пула NTP по умолчанию на одно из выбранных вами в форме массива. Мы будем использовать пул NTP США:
["0.us.pool.ntp.org","1.us.pool.ntp.org","2.us.pool.ntp.org","3.us.pool.ntp.org"]
Прокрутите вниз и нажмите зеленую кнопку «Отправить». Теперь любые хосты или группы хостов, использующие этот модуль, по умолчанию будут использовать пул NTP США.
Настройте хост Foreman для использования модуля NTP
Теперь мы готовы использовать модуль NTP для управления NTP на хосте Foreman.
Перейдите на экран «Хосты» (наведите указатель мыши на Хосты, затем нажмите Все хосты). Нажмите кнопку «Изменить» в крайнем правом углу хоста Foreman.
Перейдите на вкладку «Классы марионеток» . В разделе Доступные классы щелкните класс ntp, чтобы развернуть его, затем щелкните знак плюса рядом с \ntp:
Это перемещает класс ntp в раздел Включенные классы. Это означает, что в следующий раз, когда агент Puppet хоста Foreman зарегистрируется, к нему будет применен этот модуль Puppet.
Нажмите кнопку Отправить, чтобы применить изменения.
Просмотр конфигурации марионетки
После редактирования конфигурации хоста Foreman вы будете перенаправлены на страницу сводки хоста 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
Запустить кукольный агент
Давайте применим это изменение сейчас, чтобы увидеть, что оно делает.
На сервере Foreman запустите агент Puppet:
sudo puppet agent --test
В веб-интерфейсе вернитесь к своему хосту Foreman, затем нажмите кнопку Отчеты (рядом с кнопкой YAML). Вы должны увидеть новую запись отчета, указывающую, что были применены некоторые изменения и служба была перезапущена; нажмите на отчет. Здесь вы увидите несколько уведомлений, указывающих на то, что пакет NTP был установлен, настроен и перезапущен.
Обратите внимание, что вы только что использовали Foreman для настройки сервера Foreman. Управление любым другим хостом работает точно так же.
При желании щелкните ссылку \Просмотр различий рядом с элементом ntp.conf/content
. Это полезно, если вы хотите увидеть, как Puppet изменяет файлы конфигурации, которыми он управляет.
Добавление новых хостов в Foreman
Теперь, когда у вас настроен сервер Foreman, вы, вероятно, захотите добавить больше хостов, которыми он будет управлять. Процесс добавления дополнительных хостов аналогичен добавлению дополнительных узлов агента Puppet к мастеру. Подробные инструкции, как это сделать, можно найти в первом уроке этой серии. Обязательно настройте агент так, чтобы он указывал на главный сервер Puppet (Foreman).
После установки и запуска агента необходимо подписать его сертификат на сервере Foreman. Вы можете подписать сертификаты через командную строку, как при обычной настройке Puppet, или вы можете использовать веб-интерфейс Foreman.
Чтобы использовать веб-интерфейс для подписи сертификатов, перейдите в раздел «Инфраструктура», затем нажмите «Смарт-прокси», затем нажмите кнопку «Сертификаты»:
Здесь вы увидите все сертификаты в PuppetCA. Нажмите кнопку «Подписать» (крайний справа) рядом с новыми хостами, которые вы настроили для использования этого мастера Puppet.
Форман готов управлять вашими новыми хостами!
Заключение
Теперь, когда у вас есть работающий экземпляр Foreman, у вас есть простой способ использовать модули Puppet для управления инфраструктурой вашего сервера. Не стесняйтесь просматривать общедоступные модули Puppet или писать свои собственные (см. предыдущее руководство в этой серии) для управления вашей средой.
Удачи!