Установка PuppetDB на Ubuntu Server
Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить PuppetDB на Ubuntu Server.
PuppetDB - это масштабируемое и надежное хранилище данных для Puppet. PuppetDB собирает данные, созданные Puppet, а также предоставляет расширенные функции на основе мощного API.
В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер Puppet с установленной на нем операционной системой Ubuntu Server 22.04 LTS.
Подробно о том, как установить Ubuntu Server 22.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 22.04 LTS”.
Также на сервере должен быть установлен Puppet Server.
Узнать о том, как установить Puppet на Ubuntu Server, вы можете, прочитав “Установка Puppet на Ubuntu Server”.
Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.
Для установки OpenSSH на сервер вы можете воспользоваться командой:
Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY или MobaXterm.
В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.
Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:
- 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”.
Добавив путь к исполняемым файлам в переменные, вы сможете использовать:
Вместо:
Узнать о том, как правильно подготовить сервер Puppet для установки PuppetDB и добавить путь к исполняемым файлам Puppet в переменные, вы можете, прочитав “Установка Puppet на Ubuntu Server”.
Подключаемся к серверу Puppet, на который планируется установить PuppetDB.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Теперь установим PostgreSQL с помощью команды:
Обратите внимание, в данном руководстве в качестве системы для управления базами данных будет использоваться PostgreSQL.
Теперь необходимо создать базу данных, которую в дальнейшем будет использовать PuppetDB, а также пользователя с необходимыми правами в этой базе данных.
Переключаемся на пользователя “postgres”, который обладает правами администратора в PostgreSQL, с помощью команды:
Создаем нового пользователя с помощью команды:
В данном руководстве в качестве имени пользователя будет использоваться “puppetdb”, с паролем “sqhrgX8G*RCaYURftzoG89b”.
Указываем надежный пароль для нового пользователя и нажимаем на кнопку “Enter”.
Указываем пароль еще раз и нажимаем на кнопку “Enter”.
Создаем новую базу данных и выдаем на нее права ранее созданному пользователю с помощью команды:
Далее нужно установить оптимизированное для RegExp расширение индекса “pg_trgm” с помощью команды:
Выходим из-под пользователя “postgres” с помощью команды:
Теперь установим PuppetDB с помощью команды:
Далее установим дополнительные плагины Ruby для использования PuppetDB с помощью команды:
Теперь необходимо внести изменения в конфигурационный файл PuppetDB, открыв его в текстовом редакторе, с помощью команды:
В данном руководстве база данных для работы PuppetDB находится на одном сервере с Puppet.
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим параметр “subname” и раскомментируем его, удалив символ “#”.
В данном руководстве в качестве имени базы данных для работы PuppetDB используется “puppetdb”.
Далее добавляем новые параметры “classname” и “subprotocol” со следующими значениями:
В данном руководстве в качестве имени пользователя, обладающего правами на базу данных для работы PuppetDB, используется “puppetdb”.
Находим параметр “username” и раскомментируем его, удалив символ “#”. Затем указываем для параметра значение “puppetdb”.
Находим параметр “password” и раскомментируем его, удалив символ “#”. Затем в качестве значения для параметра указываем пароль, присвоенный пользователю “puppetdb”.
Далее добавляем новый параметр “log-slow-statements” со следующим значением:
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Проверим, что сертификаты, которые будут использоваться PuppetDB сгенерированы и конфигурационный файл “jetty.ini” содержит корректные значения, с помощью команды:
Далее необходимо создать конфигурационный файл для корректной работы PuppetDB с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, и добавляем новый раздел “[Main]” со следующими параметрами:
В данном руководстве Puppet Server установлен на сервер puppet.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Server будет доступен из сети Интернет или в локальной сети вашей организации.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
По умолчанию PuppetDB JVM настроен на использование 192 MB оперативной памяти. Это значение можно изменить в конфигурационном файле PuppetDB, открыв его в текстовом редакторе, с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим строку JAVA_ARGS=”-Xmx192m” и меняем параметр “Xmx” в соответствии с требованиями к вашему серверу PuppetDB.
Обратите внимание, в данном руководстве параметр “Xmx” будет иметь значение 256 MB.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Далее необходимо внести изменения в конфигурационный файл Puppet, открыв его в текстовом редакторе, с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим раздел “[master]” и добавляем новые параметры для корректной работы PuppetDB:
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Теперь создадим конфигурационный файл “routes.yaml”, чтобы информацию из PuppetDB можно было использовать в Puppet, с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, затем вставляем следующую конфигурацию:
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Назначим корректные права к файлам и каталогам для корректной работы Puppet с помощью команды:
Запускаем PuppetDB и включаем ее в автозапуск при запуске операционной системы с помощью команды:
Перезапустим Puppet Server, чтобы применить внесенные изменения, с помощью команды:
Проверим, что Puppet Server успешно запустился, с помощью команды:
Далее подключаемся к серверу, на который установлен Puppet Agent.
Теперь необходимо внести изменения в конфигурационный файл Puppet, открыв его в текстовом редакторе, с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, и добавляем новый раздел “[agent]” со следующими параметрами:
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Перезапустим Puppet, чтобы применить внесенные изменения, с помощью команды:
Проверим, что Puppet успешно запустился, с помощью команды:
Теперь необходимо проверить, что Puppet Agent получит конфигурацию с сервера Puppet и корректно подключится к PuppetDB, с помощью команды:
Puppet Agent отработал без ошибок и успешно получил конфигурацию с сервера Puppet, а также успешно подключился к PuppetDB.
Теперь можно проверить, что PuppetDB действительно получает данные от клиентского сервера.
Возвращаемся на сервер с установленным Puppet Server и PuppetDB.
Открываем лог Puppet Server, чтобы проверить корректность работы Puppet и PuppetDB, с помощью команды:
На клавиатуре нажимаем сочетание клавиш “Shift” и “f”, чтобы начать следить за изменениями в логе Puppet в реальном времени.
В логе Puppet должны появиться записи о том, что информация была отправлена и сохранена.
Обратите внимание, в данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net.
На клавиатуре нажимаем сочетание клавиш “Ctrl” и “c”, затем “q”, чтобы закрыть лог Puppet.
Далее открываем лог PuppetDB, чтобы проверить корректность работы Puppet и PuppetDB, с помощью команды:
На клавиатуре нажимаем сочетание клавиш “Shift” и “f”, чтобы начать следить за изменениями в логе PuppetDB в реальном времени.
В логе PuppetDB должны появиться записи о том, что информация была отправлена и сохранена.
Обратите внимание, в данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net.
На клавиатуре нажимаем сочетание клавиш “Ctrl” и “c”, затем “q”, чтобы закрыть лог PuppetDB.
Теперь можно убедиться, что данные с клиентского сервера были успешно переданы в базу данных “puppetdb”.
В данном руководстве в качестве имени пользователя, обладающего правами на базу данных для работы PuppetDB, используется “puppetdb”.
В данном руководстве в качестве имени базы данных для работы PuppetDB используется “puppetdb”.
Подключаемся к базе данных “puppetdb” с помощью команды:
Указываем пароль, присвоенный пользователю “puppetdb”, и нажимаем на кнопку “Enter”.
Включаем режим развернутого вывода таблицы с помощью команды:
Извлечем данные из таблицы “catalogs”, чтобы убедиться, что информация о клиентском сервере присутствует в таблице, с помощью команды:
Информация о клиентском сервере действительно присутствует в базе данных.
Эксклюзивы для подписчиков Patreon
Присоединяйтесь к моему Patreon и погрузитесь в мир Docker и DevOps. Здесь вас ждет эксклюзивный контент, разработанный специально для энтузиастов и профессионалов в области IT. Вашим наставником будет Владимир Михалев, опытный специалист, предлагающий ряд уровней членства от новичков до экспертов.
Что вы получите
🏆 Посты только для патронов (https://www.patreon.com/heyvaldemar){:target=”_blank”}: Полный доступ к глубоким статьям, которые раскрывают методы работы с Docker и DevOps, включая пошаговые инструкции, продвинутые советы и подробные анализы, недоступные широкой публике.
🏆 Ранний доступ (https://www.patreon.com/heyvaldemar){:target=”_blank”}: Получите возможность первыми узнавать о новых материалах и обучающих программах, опережая технологические тренды.
🏆 Приоритетная поддержка (https://www.patreon.com/heyvaldemar){:target=”_blank”}: Ваши вопросы и проблемы будут решены в первую очередь, обеспечивая индивидуальный подход и непосредственную помощь.
🏆 Влияние на будущий контент (https://www.patreon.com/heyvaldemar){:target=”_blank”}: Ваши предложения и отзывы напрямую влияют на выбор тем и создание учебных пособий, делая материалы максимально актуальными и полезными.
🏆 Признание и взаимодействие (https://www.patreon.com/heyvaldemar){:target=”_blank”}: Активные участники и поддерживающие пользователи получают благодарности в видео и на публичных трансляциях, подчеркивая вашу значимость для нашего сообщества.
🏆 Особые скидки (https://www.patreon.com/heyvaldemar){:target=”_blank”}: Наслаждайтесь скидками на курсы и предстоящие мероприятия, которые доступны исключительно для членов Patreon.
🏆 Возможности для нетворкинга (https://www.patreon.com/heyvaldemar){:target=”_blank”}: Общайтесь с другими IT-специалистами и энтузиастами в поддерживающей атмосфере, расширяя вашу профессиональную сеть и обмениваясь знаниями.
🏆 Искренняя благодарность и обновления (https://www.patreon.com/heyvaldemar){:target=”_blank”}: Личная благодарность за вашу поддержку, которая стимулирует создание нового контента и постоянное развитие.
Присоединяйтесь ко мне сейчас и начните свое путешествие по освоению Docker и DevOps с эксклюзивными материалами и поддерживающим сообществом!
Мои курсы
🎓 Погрузитесь в мои обширные курсы по информационным технологиям, разработанные как для энтузиастов, так и для профессионалов. Независимо от того, хотите ли вы освоить Docker, покорить Kubernetes или углубить свои навыки в области DevOps, мои курсы предлагают структурированный путь к повышению вашего технического мастерства.
Мои услуги
💼 Загляните в мой каталог услуг и узнайте, как мы можем сделать вашу технологическую жизнь лучше. Будь то повышение эффективности вашей IT-инфраструктуры, развитие вашей карьеры или расширение технологических горизонтов — я здесь, чтобы помочь вам достичь ваших целей. От DevOps-трансформаций до сборки игровых компьютеров — давайте сделаем ваши технологии непревзойденными!
Пополнить запасы моего кофе
💡 Telegram | Boost
💖 PayPal
🏆 Patreon
💎 GitHub
🥤 BuyMeaCoffee
🍪 Ko-fi
Подпишись
⭐ Telegram | Блог
🎬 YouTube
🐦 Twitter
🎨 Instagram
🐘 Mastodon
🧵 Threads
🎸 Facebook
🧊 Bluesky
🎥 TikTok
💻 LinkedIn
📣 daily.dev Squad
🧩 LeetCode
🐈 GitHub
Этот контент создан искусственным интеллектом?
Нет! Каждая статья — результат моей работы, наполненной страстью к Docker и десятилетиями опыта в IT. Я применяю ИИ для улучшения грамматики, чтобы обеспечить четкость технических деталей, однако все идеи, стратегии и рекомендации исключительно мои. Этот метод иногда может вызывать срабатывание детекторов ИИ, но можете быть уверены, что вся представленная информация и опыт — подлинно мои.