Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить PuppetDB на Ubuntu Server.

PuppetDB - это масштабируемое и надежное хранилище данных для Puppet. PuppetDB собирает данные, созданные Puppet, а также предоставляет расширенные функции на основе мощного API.

В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер Puppet с установленной на нем операционной системой Ubuntu Server 20.04 LTS.

Подробно о том, как установить Ubuntu Server 20.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 20.04 LTS”.

Также на сервере должен быть установлен Puppet Server.

Узнать о том, как установить Puppet на Ubuntu Server, вы можете, прочитав “Установка Puppet на Ubuntu Server”.

Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.

Для установки OpenSSH на сервер вы можете воспользоваться командой:

sudo apt install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY - свободно распространяемым клиентом для различных протоколов удаленного доступа, включая SSH, Telnet, rlogin.

В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.

Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:

  • 8081 - для работы Puppet Agent.

В данном руководстве в качестве имени сервера Puppet используется “puppet.heyvaldemar.net”.

Сервер с установленным агентом должен разрешать имя сервера Puppet не только по основному имени puppet.heyvaldemar.net, но и по имени puppetdb.heyvaldemar.net. Также сервер Puppet должен разрешать имя клиентского сервера.

Убедитесь, что Puppet сервер и клиентский сервер имеют правильные записи DNS, а также обновите файл “/etc/hosts” при необходимости.

Исполняемые файлы Puppet расположены в директории “/opt/puppetlabs/bin/”, которой по умолчанию нет в переменной среды “PATH” и в переменной “secure_path”, которая используется для операций “sudo”.

Добавив путь к исполняемым файлам в переменные, вы сможете использовать:

sudo puppet agent -t

Вместо:

sudo /opt/puppetlabs/bin/puppet agent -t

Узнать о том, как правильно подготовить сервер Puppet для установки PuppetDB и добавить путь к исполняемым файлам Puppet в переменные, вы можете, прочитав “Установка Puppet на Ubuntu Server”.

Подключаемся к серверу Puppet, на который планируется установить PuppetDB.

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Установка PuppetDB на Ubuntu Server

Теперь установим PostgreSQL с помощью команды:

sudo apt install -y postgresql

Обратите внимание, в данном руководстве в качестве системы для управления базами данных будет использоваться PostgreSQL.

Установка PuppetDB на Ubuntu Server

Теперь необходимо создать базу данных, которую в дальнейшем будет использовать PuppetDB, а также пользователя с необходимыми правами в этой базе данных.

Переключаемся на пользователя “postgres”, который обладает правами администратора в PostgreSQL, с помощью команды:

sudo su - postgres

Установка PuppetDB на Ubuntu Server

Создаем нового пользователя с помощью команды:

createuser -DRSP puppetdb

В данном руководстве в качестве имени пользователя будет использоваться “puppetdb”, с паролем “sqhrgX8G*RCaYURftzoG89b”.

Установка PuppetDB на Ubuntu Server

Указываем надежный пароль для нового пользователя и нажимаем на кнопку “Enter”.

Установка PuppetDB на Ubuntu Server

Указываем пароль еще раз и нажимаем на кнопку “Enter”.

Установка PuppetDB на Ubuntu Server

Создаем новую базу данных и выдаем на нее права ранее созданному пользователю с помощью команды:

createdb -E UTF8 -O puppetdb puppetdb

Установка PuppetDB на Ubuntu Server

Далее нужно установить оптимизированное для RegExp расширение индекса “pg_trgm” с помощью команды:

psql puppetdb -c 'create extension pg_trgm'

Установка PuppetDB на Ubuntu Server

Выходим из-под пользователя “postgres” с помощью команды:

exit

Установка PuppetDB на Ubuntu Server

Теперь установим PuppetDB с помощью команды:

sudo puppet resource package puppetdb ensure=latest

Установка PuppetDB на Ubuntu Server

Далее установим дополнительные плагины Ruby для использования PuppetDB с помощью команды:

sudo puppet resource package puppetdb-termini ensure=latest

Установка PuppetDB на Ubuntu Server

Теперь необходимо внести изменения в конфигурационный файл PuppetDB, открыв его в текстовом редакторе, с помощью команды:

sudo vim /etc/puppetlabs/puppetdb/conf.d/database.ini

Установка PuppetDB на Ubuntu Server

В данном руководстве база данных для работы PuppetDB находится на одном сервере с Puppet.

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим параметр “subname” и раскомментируем его, удалив символ “#”.

В данном руководстве в качестве имени базы данных для работы PuppetDB используется “puppetdb”.

Далее добавляем новые параметры “classname” и “subprotocol” со следующими значениями:

classname = org.postgresql.Driver
subprotocol = postgresql

В данном руководстве в качестве имени пользователя, обладающего правами на базу данных для работы PuppetDB, используется “puppetdb”.

Находим параметр “username” и раскомментируем его, удалив символ “#”. Затем указываем для параметра значение “puppetdb”.

Находим параметр “password” и раскомментируем его, удалив символ “#”. Затем в качестве значения для параметра указываем пароль, присвоенный пользователю “puppetdb”.

Далее добавляем новый параметр “log-slow-statements” со следующим значением:

log-slow-statements = 10

Установка PuppetDB на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка PuppetDB на Ubuntu Server

Проверим, что сертификаты, которые будут использоваться PuppetDB сгенерированы и конфигурационный файл “jetty.ini” содержит корректные значения, с помощью команды:

sudo puppetdb ssl-setup

Установка PuppetDB на Ubuntu Server

Далее необходимо создать конфигурационный файл для корректной работы PuppetDB с помощью команды:

sudo vim /etc/puppetlabs/puppet/puppetdb.conf

Установка PuppetDB на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, и добавляем новый раздел “[Main]” со следующими параметрами:

[Main]
server_urls = https://puppet.heyvaldemar.net:8081

В данном руководстве Puppet Server установлен на сервер puppet.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Server будет доступен из сети Интернет или в локальной сети вашей организации.

Установка PuppetDB на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка PuppetDB на Ubuntu Server

По умолчанию PuppetDB JVM настроен на использование 192 MB оперативной памяти. Это значение можно изменить в конфигурационном файле PuppetDB, открыв его в текстовом редакторе, с помощью команды:

sudo vim /etc/default/puppetdb

Установка PuppetDB на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим строку JAVA_ARGS=”-Xmx192m” и меняем параметр “Xmx” в соответствии с требованиями к вашему серверу PuppetDB.

Обратите внимание, в данном руководстве параметр “Xmx” будет иметь значение 256 MB.

Установка PuppetDB на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка PuppetDB на Ubuntu Server

Далее необходимо внести изменения в конфигурационный файл Puppet, открыв его в текстовом редакторе, с помощью команды:

sudo vim /etc/puppetlabs/puppet/puppet.conf

Установка PuppetDB на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим раздел “[master]” и добавляем новые параметры для корректной работы PuppetDB:

storeconfigs = true
storeconfigs_backend = puppetdb
reports = store,puppetdb
reportstore = /var/log/puppetlabs/puppet

Установка PuppetDB на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка PuppetDB на Ubuntu Server

Теперь создадим конфигурационный файл “routes.yaml”, чтобы информацию из PuppetDB можно было использовать в Puppet, с помощью команды:

sudo vim /etc/puppetlabs/puppet/routes.yaml

Установка PuppetDB на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, затем вставляем следующую конфигурацию:

---
master:
  facts:
    terminus: puppetdb
    cache: yaml

Установка PuppetDB на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка PuppetDB на Ubuntu Server

Назначим корректные права к файлам и каталогам для корректной работы Puppet с помощью команды:

sudo chown -R puppet:puppet `sudo puppet config print confdir`

Установка PuppetDB на Ubuntu Server

Запускаем PuppetDB и включаем ее в автозапуск при запуске операционной системы с помощью команды:

sudo puppet resource service puppetdb ensure=running enable=true

Установка PuppetDB на Ubuntu Server

Перезапустим Puppet Server, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart puppetserver

Установка PuppetDB на Ubuntu Server

Проверим, что Puppet Server успешно запустился, с помощью команды:

sudo systemctl status puppetserver

Установка PuppetDB на Ubuntu Server

Далее подключаемся к серверу, на который установлен Puppet Agent.

Теперь необходимо внести изменения в конфигурационный файл Puppet, открыв его в текстовом редакторе, с помощью команды:

sudo vim /etc/puppetlabs/puppet/puppet.conf

Установка PuppetDB на Ubuntu Server

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, и добавляем новый раздел “[agent]” со следующими параметрами:

[agent] 
report = true
pluginsync = true

Установка PuppetDB на Ubuntu Server

Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.

Установка PuppetDB на Ubuntu Server

Перезапустим Puppet, чтобы применить внесенные изменения, с помощью команды:

sudo systemctl restart puppet

Установка PuppetDB на Ubuntu Server

Проверим, что Puppet успешно запустился, с помощью команды:

sudo systemctl status puppet

Установка PuppetDB на Ubuntu Server

Теперь необходимо проверить, что Puppet Agent получит конфигурацию с сервера Puppet и корректно подключится к PuppetDB, с помощью команды:

sudo puppet agent -t

Установка PuppetDB на Ubuntu Server

Puppet Agent отработал без ошибок и успешно получил конфигурацию с сервера Puppet, а также успешно подключился к PuppetDB.

Установка PuppetDB на Ubuntu Server

Теперь можно проверить, что PuppetDB действительно получает данные от клиентского сервера.

Возвращаемся на сервер с установленным Puppet Server и PuppetDB.

Открываем лог Puppet Server, чтобы проверить корректность работы Puppet и PuppetDB, с помощью команды:

sudo less /var/log/puppetlabs/puppetserver/puppetserver.log

Установка PuppetDB на Ubuntu Server

На клавиатуре нажимаем сочетание клавиш “Shift” и “f”, чтобы начать следить за изменениями в логе Puppet в реальном времени.

В логе Puppet должны появиться записи о том, что информация была отправлена и сохранена.

Обратите внимание, в данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net.

На клавиатуре нажимаем сочетание клавиш “Ctrl” и “c”, затем “q”, чтобы закрыть лог Puppet.

Установка PuppetDB на Ubuntu Server

Далее открываем лог PuppetDB, чтобы проверить корректность работы Puppet и PuppetDB, с помощью команды:

sudo less /var/log/puppetlabs/puppetdb/puppetdb.log

Установка PuppetDB на Ubuntu Server

На клавиатуре нажимаем сочетание клавиш “Shift” и “f”, чтобы начать следить за изменениями в логе PuppetDB в реальном времени.

В логе PuppetDB должны появиться записи о том, что информация была отправлена и сохранена.

Обратите внимание, в данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net.

На клавиатуре нажимаем сочетание клавиш “Ctrl” и “c”, затем “q”, чтобы закрыть лог PuppetDB.

Установка PuppetDB на Ubuntu Server

Теперь можно убедиться, что данные с клиентского сервера были успешно переданы в базу данных “puppetdb”.

В данном руководстве в качестве имени пользователя, обладающего правами на базу данных для работы PuppetDB, используется “puppetdb”.

В данном руководстве в качестве имени базы данных для работы PuppetDB используется “puppetdb”.

Подключаемся к базе данных “puppetdb” с помощью команды:

psql -h localhost puppetdb puppetdb

Установка PuppetDB на Ubuntu Server

Указываем пароль, присвоенный пользователю “puppetdb”, и нажимаем на кнопку “Enter”.

Установка PuppetDB на Ubuntu Server

Включаем режим развернутого вывода таблицы с помощью команды:

\x

Установка PuppetDB на Ubuntu Server

Извлечем данные из таблицы “catalogs”, чтобы убедиться, что информация о клиентском сервере присутствует в таблице, с помощью команды:

select * from catalogs;

Установка PuppetDB на Ubuntu Server

Информация о клиентском сервере действительно присутствует в базе данных.

Установка PuppetDB на Ubuntu Server

Владимир Михалев
Привет, я Владимир Михалев, но друзья зовут меня Вальдемарыч. Я обладаю практическим опытом проектирования и сопровождения различных информационных систем.