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

Puppet - кроссплатформенное клиент-серверное приложение, которое позволяет централизованно управлять конфигурацией операционных систем и программ, установленных на нескольких компьютерах.

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

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

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

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

sudo apt install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY или MobaXterm.

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

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

  • TCP порт 8140 - для работы Puppet Agent.

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

Присвоим имя серверу с помощью команды:

sudo hostnamectl set-hostname puppet.heyvaldemar.net

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

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

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

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

echo "10.170.19.82 puppet.heyvaldemar.net puppetdb.heyvaldemar.net puppet puppetdb" | sudo tee -a /etc/hosts

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

Обратите внимание, запись puppetdb.heyvaldemar.net пригодится вам, если в будущем вы планируете установить PuppetDB. Данное имя также должно иметь правильную запись DNS.

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

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

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

sudo systemctl restart systemd-hostnamed

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

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

hostname

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

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

exec bash

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

На сервере Puppet должно быть выставлено корректное время, так как он будет действовать как центр сертификации для подписи сертификатов, поступающих от клиентов.

Для корректной установки времени потребуется установить пакет NTP и выполнить синхронизацию времени с вышестоящими серверами NTP.

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

sudo apt update

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

Установим NTP и ntpdate с помощью команды:

sudo apt install -y ntp ntpdate

Обратите внимание, ntpdate позволяет вручную проверить конфигурацию вашего соединения с NTP-сервером.

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

Синхронизируем время с вышестоящими NTP-серверами с помощью команды:

sudo ntpdate -u 0.ubuntu.pool.ntp.org

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

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

date

Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.

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

Посмотрим список значений часового пояса для всех локаций с помощью команды:

sudo timedatectl list-timezones

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

Выбираем подходящее для вашей локации значение и меняем часовой пояс с помощью команды:

sudo timedatectl set-timezone Europe/Berlin

Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.

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

Снова проверяем корректность даты и времени на сервере с помощью команды:

date

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

Теперь необходимо загрузить и установить пакет конфигурации репозитория Puppet Server.

Загрузим пакет конфигурации репозитория Puppet Server с помощью команды:

wget https://apt.puppetlabs.com/puppet7-release-jammy.deb

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

Установим пакет конфигурации репозитория Puppet Server с помощью команды:

sudo dpkg -i puppet7-release-jammy.deb

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

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

sudo apt update

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

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

sudo apt install -y puppetserver

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

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

Обратите внимание, путь к исполняемым файлам не имеет значения для служб Puppet, так как запуск служб не зависит от “PATH” и “secure_path”.

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

sudo puppet agent -t

Вместо:

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

Добавим путь к исполняемым файлам Puppet в переменную “secure_path”.

Открываем конфигурационный файл “sudoers” в текстовом редакторе с помощью команды:

sudo visudo

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

Находим переменную “secure_path”, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.

Для того чтобы сохранить изменения в файле “sudoers”, нажимаем “Ctrl+x”.

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

Теперь необходимо подтвердить изменения в файле.

Нажимаем на кнопку “y”.

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

Нажимаем на кнопку “Enter”, чтобы подтвердить сохранение файла.

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

Теперь добавим путь к исполняемым файлам Puppet в переменную среды “PATH”.

Открываем конфигурационный файл “environment” в текстовом редакторе с помощью команды:

sudo vim /etc/environment

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

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

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

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

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

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

sudo vim /etc/default/puppetserver

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

Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, находим строку JAVA_ARGS=”-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger” и меняем параметры “Xms” и “Xmx” в соответствии с требованиями к вашему серверу Puppet.

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

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

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

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

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

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

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

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

dns_alt_names = puppet,puppetdb,puppet.heyvaldemar.net,puppetdb.heyvaldemar.net

Далее добавляем новый раздел “[main]” со следующими параметрами:

[main]
certname = puppet.heyvaldemar.net
server = puppet.heyvaldemar.net
environment = production
runinterval = 15m

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

Обратите внимание, записи puppetdb и puppetdb.heyvaldemar.net пригодятся вам, если в будущем вы планируете установить PuppetDB. Данное имя также должно иметь правильную запись DNS.

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

Обратите внимание, в параметре “runinterval” указывается промежуток времени между запросами агента к серверу Puppet.

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

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

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

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

sudo puppetserver ca setup

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

Запускаем Puppet Server с помощью команды:

sudo systemctl start puppetserver

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

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

sudo systemctl status puppetserver

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

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

sudo systemctl enable puppetserver

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

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

Присвоим имя серверу с помощью команды:

sudo hostnamectl set-hostname puppet-agent.heyvaldemar.net

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

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

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

Убедитесь, что имя сервера имеет правильную запись DNS, а также обновите файл “/etc/hosts”, добавив IP-адрес и имя клиентского сервера, с помощью команды:

echo "10.170.19.3 puppet-agent.heyvaldemar.net puppet-agent" | sudo tee -a /etc/hosts

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

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

Далее в файл “/etc/hosts” добавим IP-адрес и имя сервера Puppet с помощью команды:

echo "10.170.19.82 puppet.heyvaldemar.net puppetdb.heyvaldemar.net puppet puppetdb" | sudo tee -a /etc/hosts

Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Puppet даже без записи DNS.

Обратите внимание, запись puppetdb.heyvaldemar.net пригодится вам, если в будущем вы планируете установить PuppetDB. Данное имя также должно иметь правильную запись DNS.

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

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

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

sudo systemctl restart systemd-hostnamed

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

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

hostname

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

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

exec bash

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

На сервере с Puppet Agent должно быть выставлено корректное время.

Для корректной установки времени потребуется установить пакет NTP и выполнить синхронизацию времени с вышестоящими серверами NTP.

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

sudo apt update

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

Установим NTP и ntpdate с помощью команды:

sudo apt install -y ntp ntpdate

Обратите внимание, ntpdate позволяет вручную проверить конфигурацию вашего соединения с NTP-сервером.

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

Синхронизируем время с вышестоящими NTP-серверами с помощью команды:

sudo ntpdate -u 0.ubuntu.pool.ntp.org

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

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

date

Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.

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

Посмотрим список значений часового пояса для всех локаций с помощью команды:

sudo timedatectl list-timezones

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

Выбираем подходящее для вашей локации значение и меняем часовой пояс с помощью команды:

sudo timedatectl set-timezone Europe/Berlin

Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.

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

Снова проверяем корректность даты и времени на сервере с помощью команды:

date

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

Теперь необходимо загрузить и установить пакет конфигурации репозитория Puppet Agent.

Загрузим пакет конфигурации репозитория Puppet Agent с помощью команды:

wget https://apt.puppetlabs.com/puppet7-release-jammy.deb

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

Установим пакет конфигурации репозитория Puppet Agent с помощью команды:

sudo dpkg -i puppet7-release-jammy.deb

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

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

sudo apt update

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

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

sudo apt install -y puppet-agent

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

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

Обратите внимание, путь к исполняемым файлам не имеет значения для служб Puppet, так как запуск служб не зависит от “PATH” и “secure_path”.

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

sudo puppet agent -t

Вместо:

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

Добавим путь к исполняемым файлам Puppet в переменную “secure_path”.

Открываем конфигурационный файл “sudoers” в текстовом редакторе с помощью команды:

sudo visudo

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

Находим переменную “secure_path”, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.

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

Теперь необходимо подтвердить изменения в файле.

Нажимаем на кнопку “y”.

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

Нажимаем на кнопку “Enter”, чтобы подтвердить сохранение файла.

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

Теперь добавим путь к исполняемым файлам Puppet в переменную среды “PATH”.

Открываем конфигурационный файл “environment” в текстовом редакторе с помощью команды:

sudo vim /etc/environment

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

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

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

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

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

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

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

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

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

[main]
certname = puppet-agent.heyvaldemar.net
server = puppet.heyvaldemar.net
environment = production
runinterval = 15m

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

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

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

Обратите внимание, в параметре “runinterval” указывается промежуток времени между запросами агента к серверу Puppet.

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

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

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

sudo puppet resource service puppet ensure=running enable=true

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

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

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

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

sudo puppetserver ca list

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

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

sudo puppetserver ca sign --certname puppet-agent.heyvaldemar.net

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

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

Клиентский запрос успешно подписан.

Далее можно просмотреть все подписанные и неподписанные клиентские запросы с помощью команды:

sudo puppetserver ca list --all

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

Обратите внимание, подписать все клиентские запросы в очереди можно с помощью команды:

sudo puppetserver ca sign --all

Отозвать сертификат клиента можно с помощью команды:

sudo puppetserver ca revoke --certname puppet-agent.heyvaldemar.net

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

Теперь можно создать манифест, чтобы проверить работоспособность Puppet.

Манифест - это файл данных, содержащий конфигурацию клиента, написанный на языке Puppet или Ruby DSL.

Создадим манифест с помощью команды:

sudo vim /etc/puppetlabs/code/environments/production/manifests/site.pp

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

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

node 'puppet-agent.heyvaldemar.net' {
  file { '/tmp/puppetfile':
    ensure => 'present',
    owner => 'root',
    group => 'root',
    mode => '0644',
    content => "This File is created by Puppet Server\n"
  }
}

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

Обратите внимание, в директории “/tmp” будет создан файл “puppetfile”, содержащий текст “This File is created by Puppet Server”. Владельцем файла будет назначен пользователь “root”.

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

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

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

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

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

sudo puppet agent -t

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

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

cat /tmp/puppetfile

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

Файл успешно создан и содержит текст, указанный в манифесте.

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

Пополнить запасы кофе автора

💡 Telegram | Boost
💖 PayPal
🏆 Patreon
💎 GitHub
🥤 BuyMeaCoffee
🍪 Ko-fi

Владимир Михалев
Я - Владимир Михалев, Капитан Docker, но друзья могут называть меня Вальдемарыч.

DevOps комьюнити

Привет! 👋 Если у тебя есть вопросы по установке или настройке, то задайте их мне и другим ИТ-экспертам нашего сообщества: