Pull to refresh

Централизованное управление конфигурациями: Puppet + Foreman. Часть ІI

Reading time 3 min
Views 9.3K
Это вторая часть из серии статей о связке Puppet + Foreman, в ней будет рассмотрено следующее:

* Создание групп хостов
* Добавление хоста в группу
* Применение манифестов на группу хостов
* Автоподпись сертификатов
* Автоматическое распределение хостов по группам


Для создания группы хостов заходим в Foreman и выбираем в меню «Настройка» — «Группы узлов» — «Новая группа узлов», у нас открывается страница с настройками новой группы. Здесь можно выбрать родителя группы(то есть получается можно делать вложения групп), имя(в нашем случае Bobrovka), окружение, центр сертификации и мастер-сервер выбираем наш Puppet сервер.


Если хотим сразу добавить манифесты которые будут применяться на группу — переходим во вкладку «Классы Puppet» — здесь все аналогично с применением манифеста к одиночному клиенту, только манифест будет применен на все хосты входящие в группу. Подтверждаем изменения.


Теперь если мы перейдем в «Настройка» — Группы узлов" — мы увидим список наших групп.


Для того чтобы добавить существующий хост в определенную группу — переходим в «Узлы» — «Все узлы», нажимаем на имени нужного нам узла(открывается детальная информация об узле) и жмем кнопку «Изменить» и в поле «Группа» выбираем нужную нам группу. Подтверждаем изменения.


После того как мы добавили нужные нам хосты в группу мы можем добавить манифесты для них(если Вы не сделали это при создании группы). Для добавления манифеста в существующую группу переходим в «Настройки» — «Группы узлов» — нажимаем на имя нужной нам группы и повторяем процедуру описанную 3 абзаца назад.

Итак — у нас есть работающий сервер со связкой Puppet + Foreman, но если мы хотим добавить новый хост в Puppet нам каждый раз приходится подписывать сертификаты(меня это напрягает) в веб-интерфейсе либо же в консоли. Для того чтобы сертификаты подписывались автоматически можно использовать возможность автоматической подписи сертификатов на основе имени клиента. Для этого переходим в меню «Инфраструктура» — «Smart Proxies» жмем на «Сертификаты» и в правой верхней части нажимаем «Записи autosign» — создаем новую запись. В поле где пишется имя — пишем * и сохраняем.


В результате у нас будут подписываться все клиентские сертификаты без исключений, что есть не очень хорошо(но для начала подойдет). Чтобы подписывать не все сертификаты, а например только сертификаты от веб серверов нужно изменить запись на web-*(это сработает если у Вас все веб сервера именуются так: www-1.domain.name, www-n.domain.name).

Для автоматического распределения новосозданных хостов по группам можно использовать плагин foreman_default_hostgroup. Этот плагин позволяет распределять хосты по группам на основе фактов.
Для установки плагина нужно выполнить комманду apt-get install ruby-foreman-default-hostgroup
Если плагин устновился — он будет отображаться в меню «Администратор» — «О программе» во вкладке «Модули»(возможно потребуется перезапуск Foreman)


После установки нужно отредактировать файл в каталоге /usr/share/foreman/config/settings.plugins.d/default_hostgroup.yaml

default_hostgroup.yaml
— :default_hostgroup:
:facts_map:
«Bobrovka»:
«ipaddress»: «10.10.*»
«Losovka»:
«ipaddress»: «10.110.0.*»
«Medvedka»:
«ipaddress»: «10.210.0.*»
«Default»:
«hostname»: ".*"

Если Вы используете мой конфиг от плагина, тогда у Вас будет производиться сортировка по группам на основе IP адреса клиента. В данном примере — если клиент имеет IP 10.10.55.12 — он попадет в группу «Bobrovka», если же у него адрес 10.210.138.7 — он попадет в группу «Medvedka», если IP адрес клиента не попадает ни под одно из условий — он попадает в группу «Default». Плагин считывает конфиг с верху в низ, поэтому группа «Default» находится в самом низу, так как под ее критерии подпадают абсолютно все IP адреса.

На этом вторая часть моей публикации завершается.
Результат нашей работы — работающий Puppet + Foreman с возможностью автоматической подписи сертификатов и распределения хостов по группам на основе фактов.

Использованные ресурсы:
docs.puppetlabs.com/puppet/latest/reference/config_file_autosign.html
github.com/GregSutcliffe/foreman_default_hostgroup
Tags:
Hubs:
+4
Comments 0
Comments Leave a comment

Articles