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

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

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

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

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

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

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

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

sudo apt-get 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

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

sudo apt-get install -y postgresql

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

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

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

sudo su - postgres

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

createuser -DRSP puppetdb

В данном руководстве в качестве имени пользователя будет использоваться «puppetdb», с паролем «W@/Bx<dWx7Hub#=%T]J$}Gf».

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

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

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

createdb -E UTF8 -O puppetdb puppetdb

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

psql puppetdb -c 'create extension pg_trgm'

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

exit

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

sudo puppet resource package puppetdb ensure=latest

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

sudo puppet resource package puppetdb-termini ensure=latest

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

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

В данном руководстве база данных для работы 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

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

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

sudo puppetdb ssl-setup

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

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

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

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

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

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

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

sudo vim /etc/default/puppetdb

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sudo puppet resource service puppetdb ensure=running enable=true

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

sudo systemctl restart puppetserver

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

sudo systemctl status puppetserver

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

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

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

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

[agent] 
report = true
pluginsync = true

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

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

sudo systemctl restart puppet

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

sudo systemctl status puppet

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

sudo puppet agent -t

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

psql -h localhost puppetdb puppetdb

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

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

\x

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

select * from catalogs;

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

Автор

Привет, я Владимир Михалев, но друзья зовут меня Вальдемарыч. Я обладаю практическим опытом проектирования и сопровождения различных информационных систем. На моем веб-сайте ты найдешь подробные и понятные руководства по настройке ИТ-решений. Окунись в океан, полный позитива и технологий! По вопросам сотрудничества: callvaldemar@gmail.com

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.