Введение.
В этой части мы будем устанавливать базу данных платформы. База Puppetdb является одной из трёх составляющих ядра платформы в которую входят: мастер-сервер, puppet-agent и puppetdb.
Подготовка puppetdb.
Прежде чем начинать манипуляции с базой платформы, отметим важную особенность хранилища Puppet. Модуль puppetdb является управляющим звеном хранилища выступающий в роли коннектора между мастер сервером Puppet и базой данных построенного на PgSQL.
- При подключении к PuppetDB, мастер сервер осуществляет:
- отправку данные каждого узла в PuppetDB
- посылает запрос PuppetDB для составлении каталогов узлов
Но прежде чем приступить к установке связки Puppetdb+PostgreSQL, попробуем организовать работу сервера без них. В этом случае мы получаем простую в установке систему автоматизации выполнения кода различного характера. Надо отметить, что при этом не будут доступна система контроля в виде графического интерфейса и сбора информации. Проконтролировать выполнение задач можно будет другими штатными средствами которых достаточно в Linux. К вопросу установки базы данных Puppet вернёмся позднее в другой части нашей повести.
Работа Puppet без puppetdb.
В качестве примера работы платформы без использования puppetdb установим, с помощью кода, на рабочею станцию lin-sl пакет notepad. Многим пользователям пришедшим в Linux из Windows эта программа хорошо знакома и они без неё скучают… В репозитории ALT Linux программа звучить как notepadqq.
Подготовка манифеста.
Под манифестом мы понимаем небольшую программу содержащею описание для выполнения последовательности кода. В нашем случае этим кодом является установка утилиты notepad с помощью агента на клиентском ПК. Сам манифест хранится(объявляется) в хранилище мастер сервера1. Агент на клиенте через равные промежутки времени осуществляет соединение(синхронизация) с мастер-сервером, проверяя наличие новых манифестов и выполнение кода указанного в них. Запуск агента можно выполнить и в ручном режиме.
Манифест notepad2.
Создадим в каталоге vim /etc/puppet/code/environments/production/manifests/soft.pp сценарий для установки программы MS Windows notepad.
node 'lin-sl' {
Package { ensure => installed }
package { 'notepadqq': }
}
Если несколько узлов (node)3 — перечислить через запятую. Поместим манифест в каталог показанный в начале.
Выполнение манифеста.
На рабочей станции запускаем команду.
# puppet agent --test --verbose
Контроль выполнения манифеста.
Проконтролировать выполнение кода можно несколькими способами. 1.Запустить в «ручную» агента, как показано выше или подождать выполнение обращения агента к серверу ~30 мин. В любом случае появится сообщение, если успешно, как показано ниже.
# ....
Notice: /Stage[main]/Main/Node[lin-sl]/Package[notepadqq]/ensure: created (corrective)
Notice: Applied catalog in 12.74 seconds
2.Непосредственно на рабочей станции, проверить лоток «Стандартные».
3. Смотреть журнал мастер-сервера, отчёты о своих действиях агенты отправляет на сервер.
Заключение.
В этой части мы рассмотрели работу Puppet без установки базы данных Puppetdb + PostgreSQL. Этим мы сократили время для перехода к практическому использованию платформы и наглядному показу, как это всё работает. Конечно такая тонкая работа, как сбор статистических данных, например серийных номеров или параметров HDD, ОЗУ… требуют наличие хранилища в виде БД. Но нам же не терпится, а с установкой и настройкой PostgreSQL и puppetdb можно «завязнуть», после чего махнув рукой и послав… бросить эту затею. В том состоянии Puppet, которое было описано выше, многие администраторы найдут полезное для своей организации и для себя, освобождая от рутины своё рабочее время. Мониторинг и сбор сведений можно поручить Zabbix.
Полезные ссылки.
- Сайт Puppet
- Wiki Puppetserver
- Wiki Puppetdb
- Doc Puppet
- Puppet часть 1
- Puppet часть 2
- Puppet часть 3
- Puppet часть 4
- Puppet часть 5
Сноски.
- Путь хранилища /etc/puppet/code/environments/production/manifests ↩︎
- Созданию манифестов будет посвящена отдельная статья ↩︎
- Если указать defoult, выполнять код сможет любая станция где есть агент ↩︎