Продвинутые функции Puppet Dashboard

В прошлой записи был установлен Puppet Dashboard, в этой записи я хочу продолжить развивать тему Puppet и рассказать о включении продвинутых функциях Puppet Dashboard, а именно о Inventory Service и Filebucket Viewer. Первое предоставляет доступ к тому что в теминологии puppet называется факты (facts) и каталог (catalog) для каждого узла, а второе — резервные копии всех файлов изменных с помощью Puppet с возможностью просмотра изменнений (diff) через веб-интерфейс.

Для начала нам потребуется установить PuppetDB. PuppetDB выступает хранилищем для Puppet Inventory Service, это приложение написанное на java. Оно может хранить данные во встроенной БД HSQLDB или PostgreSQL. В данном примере будет использоваться встроенная БД.

Устанавливаем PuppetDB и коннектор к puppetmaster.

root@puppet:~# apt-get install puppetdb puppetdb-terminus

Запускаем сервис.

root@puppet:~# service puppetdb start

Сообщим puppetmaster, о существовании PuppetDB, для этого создаем файл /etc/puppet/puppetdb.conf

[main]
server = puppet.local
port = 8081

И добавляем в /etc/puppet/puppet.conf следующие строки

[master]
  storeconfigs = true
  storeconfigs_backend = puppetdb

В /etc/puppet/routes.yaml добавляем

master:
  facts:
    terminus: puppetdb
    cache: yaml

Перезапускаем puppetmaster.

root@puppet:~# service puppetmaster restart

Тестируем.

root@linux:~# puppet agent --test

Если настроено верно, в логе дожна появится информации о фактах и каталоге для узла на котором был запущен агент.

root@puppet:~# tail /var/log/puppetdb/puppetdb.log
...
[puppetdb.command] [3b0d1036-5a0d-44b0-8900-2f2cd3fb3e51] [replace facts] linux.local
[puppetdb.command] [f566616c-d756-42a8-ae0d-63a93a751250] [replace catalog] linux.local

Статистика использования PuppetDB доступна через встроенный веб-интерфейс: http://puppet.local:8080/dashboard/index.html

PuppetDB

Немного паранойи. Разрешаем доступ к фактам только для Puppet Dashboard, для этого создаем /etc/puppet/auth.conf (здесь «dashboard» — имя сертификата которому доступ разрешен).

path /facts
auth yes
method find, search
allow dashboard

Ну а теперь пора вернуться к тому с чего мы начинали. Включаем продвинутые фукции Puppet Dashboard.

Inventory Support

Редактируем /etc/puppet-dashboard/settings.yml

enable_inventory_service: true
inventory_server: 'puppet.local'
inventory_port: 8140

Filebucket Viewer

Редактируем /etc/puppet-dashboard/settings.yml

use_file_bucket_diffs: true
file_bucket_server: 'puppet.local'
file_bucket_port: 8140

Добавляем в /etc/puppet/puppet.conf

archive_files = true

Добавляем в основной манифест /etc/puppet/manifests/site.pp

filebucket { "main":
  server => "puppet.local",
  path => false,
}

File { backup => "main" }

Перезапускаем службу Puppet Dashboard.

root@puppet:~# service puppet-dashboard restart