Установка Puppet на Ubuntu Server
Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Puppet на Ubuntu Server.
Puppet - кроссплатформенное клиент-серверное приложение, которое позволяет централизованно управлять конфигурацией операционных систем и программ, установленных на нескольких компьютерах.
В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть сервер с установленной на нем операционной системой Ubuntu Server 22.04 LTS.
Подробно о том, как установить Ubuntu Server 22.04 LTS, вы можете прочитать в моем руководстве “Установка Ubuntu Server 22.04 LTS”.
Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.
Для установки OpenSSH на сервер вы можете воспользоваться командой:
Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY или MobaXterm.
В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.
Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:
- TCP порт 8140 - для работы Puppet Agent.
Подключаемся к серверу, на который планируется установить Puppet Server.
Присвоим имя серверу с помощью команды:
В данном руководстве в качестве имени сервера Puppet используется “puppet.heyvaldemar.net”.
Сервер с установленным агентом должен разрешать имя сервера Puppet, и также сервер Puppet должен разрешать имя клиентского сервера.
Убедитесь, что имя сервера имеет правильную запись DNS, а также обновите файл “/etc/hosts” на сервере с помощью команды:
В данном руководстве в качестве имени сервера Puppet используется “puppet.heyvaldemar.net”.
Обратите внимание, запись puppetdb.heyvaldemar.net пригодится вам, если в будущем вы планируете установить PuppetDB. Данное имя также должно иметь правильную запись DNS.
Узнать о том, как установить PuppetDB на Ubuntu Server, вы можете, прочитав “Установка PuppetDB на Ubuntu Server”.
Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:
Проверим корректность имени сервера с помощью команды:
Теперь заменим текущий процесс оболочки на новый с помощью команды:
На сервере Puppet должно быть выставлено корректное время, так как он будет действовать как центр сертификации для подписи сертификатов, поступающих от клиентов.
Для корректной установки времени потребуется установить пакет NTP и выполнить синхронизацию времени с вышестоящими серверами NTP.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Установим NTP и ntpdate с помощью команды:
Обратите внимание, ntpdate позволяет вручную проверить конфигурацию вашего соединения с NTP-сервером.
Синхронизируем время с вышестоящими NTP-серверами с помощью команды:
Проверим корректность даты и времени на сервере с помощью команды:
Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.
Посмотрим список значений часового пояса для всех локаций с помощью команды:
Выбираем подходящее для вашей локации значение и меняем часовой пояс с помощью команды:
Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.
Снова проверяем корректность даты и времени на сервере с помощью команды:
Теперь необходимо загрузить и установить пакет конфигурации репозитория Puppet Server.
Загрузим пакет конфигурации репозитория Puppet Server с помощью команды:
Установим пакет конфигурации репозитория Puppet Server с помощью команды:
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Теперь установим Puppet Server с помощью команды:
Исполняемые файлы Puppet расположены в директории “/opt/puppetlabs/bin/”, которой по умолчанию нет в переменной среды “PATH” и в переменной “secure_path”, которая используется для операций “sudo”.
Обратите внимание, путь к исполняемым файлам не имеет значения для служб Puppet, так как запуск служб не зависит от “PATH” и “secure_path”.
Добавив путь к исполняемым файлам в переменные, вы сможете использовать:
Вместо:
Добавим путь к исполняемым файлам Puppet в переменную “secure_path”.
Открываем конфигурационный файл “sudoers” в текстовом редакторе с помощью команды:
Находим переменную “secure_path”, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.
Для того чтобы сохранить изменения в файле “sudoers”, нажимаем “Ctrl+x”.
Теперь необходимо подтвердить изменения в файле.
Нажимаем на кнопку “y”.
Нажимаем на кнопку “Enter”, чтобы подтвердить сохранение файла.
Теперь добавим путь к исполняемым файлам Puppet в переменную среды “PATH”.
Открываем конфигурационный файл “environment” в текстовом редакторе с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
По умолчанию Puppet Server JVM настроен на использование 2 GB оперативной памяти. Это значение можно изменить в конфигурационном файле Puppet, открыв его в текстовом редакторе, с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим строку JAVA_ARGS=”-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger” и меняем параметры “Xms” и “Xmx” в соответствии с требованиями к вашему серверу Puppet.
Обратите внимание, в данном руководстве параметры “Xms” и “Xmx” будут иметь значение 1 GB.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Далее необходимо внести изменения в другой конфигурационный файл Puppet, открыв его в текстовом редакторе, с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим раздел “[master]” и добавляем новую строку с альтернативными именами сервера Puppet:
Далее добавляем новый раздел “[main]” со следующими параметрами:
В данном руководстве Puppet Server установлен на сервер puppet.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Server будет доступен из сети Интернет или в локальной сети вашей организации.
Обратите внимание, записи puppetdb и puppetdb.heyvaldemar.net пригодятся вам, если в будущем вы планируете установить PuppetDB. Данное имя также должно иметь правильную запись DNS.
Узнать о том, как установить PuppetDB на Ubuntu Server, вы можете, прочитав “Установка PuppetDB на Ubuntu Server”.
Обратите внимание, в параметре “runinterval” указывается промежуток времени между запросами агента к серверу Puppet.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Теперь создадим корневую и промежуточную подпись CA для Puppet Server с помощью команды:
Запускаем Puppet Server с помощью команды:
Проверим, что Puppet Server успешно запустился, с помощью команды:
Включаем автозапуск Puppet Server при запуске операционной системы с помощью команды:
Далее подключаемся к серверу, на который планируется установить Puppet Agent.
Присвоим имя серверу с помощью команды:
В данном руководстве в качестве имени сервера с установленным агентом Puppet используется “puppet-agent.heyvaldemar.net”.
Сервер с установленным агентом должен разрешать имя сервера Puppet, и также сервер Puppet должен разрешать имя клиентского сервера.
Убедитесь, что имя сервера имеет правильную запись DNS, а также обновите файл “/etc/hosts”, добавив IP-адрес и имя клиентского сервера, с помощью команды:
В данном руководстве в качестве имени сервера с установленным агентом Puppet используется “puppet-agent.heyvaldemar.net”.
Далее в файл “/etc/hosts” добавим IP-адрес и имя сервера Puppet с помощью команды:
Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Puppet даже без записи DNS.
Обратите внимание, запись puppetdb.heyvaldemar.net пригодится вам, если в будущем вы планируете установить PuppetDB. Данное имя также должно иметь правильную запись DNS.
Узнать о том, как установить PuppetDB на Ubuntu Server, вы можете, прочитав “Установка PuppetDB на Ubuntu Server”.
Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:
Проверим корректность имени сервера с помощью команды:
Теперь заменим текущий процесс оболочки на новый с помощью команды:
На сервере с Puppet Agent должно быть выставлено корректное время.
Для корректной установки времени потребуется установить пакет NTP и выполнить синхронизацию времени с вышестоящими серверами NTP.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Установим NTP и ntpdate с помощью команды:
Обратите внимание, ntpdate позволяет вручную проверить конфигурацию вашего соединения с NTP-сервером.
Синхронизируем время с вышестоящими NTP-серверами с помощью команды:
Проверим корректность даты и времени на сервере с помощью команды:
Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.
Посмотрим список значений часового пояса для всех локаций с помощью команды:
Выбираем подходящее для вашей локации значение и меняем часовой пояс с помощью команды:
Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.
Снова проверяем корректность даты и времени на сервере с помощью команды:
Теперь необходимо загрузить и установить пакет конфигурации репозитория Puppet Agent.
Загрузим пакет конфигурации репозитория Puppet Agent с помощью команды:
Установим пакет конфигурации репозитория Puppet Agent с помощью команды:
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
Теперь установим Puppet Agent с помощью команды:
Исполняемые файлы Puppet расположены в директории “/opt/puppetlabs/bin/”, которой по умолчанию нет в переменной среды “PATH” и в переменной “secure_path”, которая используется для операций “sudo”.
Обратите внимание, путь к исполняемым файлам не имеет значения для служб Puppet, так как запуск служб не зависит от “PATH” и “secure_path”.
Добавив путь к исполняемым файлам в переменные, вы сможете использовать:
Вместо:
Добавим путь к исполняемым файлам Puppet в переменную “secure_path”.
Открываем конфигурационный файл “sudoers” в текстовом редакторе с помощью команды:
Находим переменную “secure_path”, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.
Теперь необходимо подтвердить изменения в файле.
Нажимаем на кнопку “y”.
Нажимаем на кнопку “Enter”, чтобы подтвердить сохранение файла.
Теперь добавим путь к исполняемым файлам Puppet в переменную среды “PATH”.
Открываем конфигурационный файл “environment” в текстовом редакторе с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Далее необходимо внести изменения в конфигурационный файл Puppet, открыв его в текстовом редакторе, с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, добавляем новый раздел “[main]” со следующими параметрами:
В данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Agent будет доступен из сети Интернет или в локальной сети вашей организации.
Также Puppet Server установлен на сервер puppet.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Server будет доступен из сети Интернет или в локальной сети вашей организации.
Обратите внимание, в параметре “runinterval” указывается промежуток времени между запросами агента к серверу Puppet.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Запускаем Puppet Agent и включаем его в автозапуск при запуске операционной системы с помощью команды:
Возвращаемся на сервер с установленным Puppet Server.
Теперь необходимо утвердить запрос сертификата для сервера, на котором установлен Puppet Agent, чтобы в последующем клиент смог получать конфигурацию от сервера Puppet.
Просмотрим клиентские запросы в очереди с помощью команды:
Подписываем клиентский запрос с помощью команды:
В данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Agent будет доступен из сети Интернет или в локальной сети вашей организации.
Клиентский запрос успешно подписан.
Далее можно просмотреть все подписанные и неподписанные клиентские запросы с помощью команды:
Обратите внимание, подписать все клиентские запросы в очереди можно с помощью команды:
Отозвать сертификат клиента можно с помощью команды:
В данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Agent будет доступен из сети Интернет или в локальной сети вашей организации.
Теперь можно создать манифест, чтобы проверить работоспособность Puppet.
Манифест - это файл данных, содержащий конфигурацию клиента, написанный на языке Puppet или Ruby DSL.
Создадим манифест с помощью команды:
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, затем вставляем следующую конфигурацию:
В данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Agent будет доступен из сети Интернет или в локальной сети вашей организации.
Обратите внимание, в директории “/tmp” будет создан файл “puppetfile”, содержащий текст “This File is created by Puppet Server”. Владельцем файла будет назначен пользователь “root”.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Возвращаемся на сервер с установленным Puppet Agent.
Теперь необходимо получить конфигурацию для клиента с сервера Puppet с помощью команды:
Далее можно проверить, что файл успешно создался и содержит текст, указанный ранее в манифесте, с помощью команды:
Файл успешно создан и содержит текст, указанный в манифесте.
Мои курсы
🎓 Погрузитесь в мои обширные курсы по информационным технологиям, разработанные как для энтузиастов, так и для профессионалов. Независимо от того, хотите ли вы освоить 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. Я применяю ИИ для улучшения грамматики, чтобы обеспечить четкость технических деталей, однако все идеи, стратегии и рекомендации исключительно мои. Этот метод иногда может вызывать срабатывание детекторов ИИ, но можете быть уверены, что вся представленная информация и опыт — подлинно мои.