Установка 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 на сервер вы можете воспользоваться командой:
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, и также сервер 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”.
Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:
sudo systemctl restart systemd-hostnamed
Проверим корректность имени сервера с помощью команды:
hostname
Теперь заменим текущий процесс оболочки на новый с помощью команды:
exec bash
На сервере Puppet должно быть выставлено корректное время, так как он будет действовать как центр сертификации для подписи сертификатов, поступающих от клиентов.
Для корректной установки времени потребуется установить пакет NTP и выполнить синхронизацию времени с вышестоящими серверами NTP.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
sudo apt update
Установим NTP и ntpdate с помощью команды:
sudo apt install -y ntp ntpdate
Обратите внимание, ntpdate позволяет вручную проверить конфигурацию вашего соединения с NTP-сервером.
Синхронизируем время с вышестоящими NTP-серверами с помощью команды:
sudo ntpdate -u 0.ubuntu.pool.ntp.org
Проверим корректность даты и времени на сервере с помощью команды:
date
Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.
Посмотрим список значений часового пояса для всех локаций с помощью команды:
sudo timedatectl list-timezones
Выбираем подходящее для вашей локации значение и меняем часовой пояс с помощью команды:
sudo timedatectl set-timezone Europe/Berlin
Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.
Снова проверяем корректность даты и времени на сервере с помощью команды:
date
Теперь необходимо загрузить и установить пакет конфигурации репозитория Puppet Server.
Загрузим пакет конфигурации репозитория Puppet Server с помощью команды:
wget https://apt.puppetlabs.com/puppet7-release-jammy.deb
Установим пакет конфигурации репозитория Puppet Server с помощью команды:
sudo dpkg -i puppet7-release-jammy.deb
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
sudo apt update
Теперь установим Puppet Server с помощью команды:
sudo apt install -y puppetserver
Исполняемые файлы 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
Находим переменную “secure_path”, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.
Для того чтобы сохранить изменения в файле “sudoers”, нажимаем “Ctrl+x”.
Теперь необходимо подтвердить изменения в файле.
Нажимаем на кнопку “y”.
Нажимаем на кнопку “Enter”, чтобы подтвердить сохранение файла.
Теперь добавим путь к исполняемым файлам Puppet в переменную среды “PATH”.
Открываем конфигурационный файл “environment” в текстовом редакторе с помощью команды:
sudo vim /etc/environment
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
По умолчанию Puppet Server JVM настроен на использование 2 GB оперативной памяти. Это значение можно изменить в конфигурационном файле Puppet, открыв его в текстовом редакторе, с помощью команды:
sudo vim /etc/default/puppetserver
Нажимаем на кнопку “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, открыв его в текстовом редакторе, с помощью команды:
sudo vim /etc/puppetlabs/puppet/puppet.conf
Нажимаем на кнопку “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.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Теперь создадим корневую и промежуточную подпись CA для Puppet Server с помощью команды:
sudo puppetserver ca setup
Запускаем Puppet Server с помощью команды:
sudo systemctl start puppetserver
Проверим, что Puppet Server успешно запустился, с помощью команды:
sudo systemctl status puppetserver
Включаем автозапуск Puppet Server при запуске операционной системы с помощью команды:
sudo systemctl enable puppetserver
Далее подключаемся к серверу, на который планируется установить Puppet Agent.
Присвоим имя серверу с помощью команды:
sudo hostnamectl set-hostname puppet-agent.heyvaldemar.net
В данном руководстве в качестве имени сервера с установленным агентом Puppet используется “puppet-agent.heyvaldemar.net”.
Сервер с установленным агентом должен разрешать имя сервера 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”.
Далее в файл “/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”.
Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:
sudo systemctl restart systemd-hostnamed
Проверим корректность имени сервера с помощью команды:
hostname
Теперь заменим текущий процесс оболочки на новый с помощью команды:
exec bash
На сервере с Puppet Agent должно быть выставлено корректное время.
Для корректной установки времени потребуется установить пакет NTP и выполнить синхронизацию времени с вышестоящими серверами NTP.
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
sudo apt update
Установим NTP и ntpdate с помощью команды:
sudo apt install -y ntp ntpdate
Обратите внимание, ntpdate позволяет вручную проверить конфигурацию вашего соединения с NTP-сервером.
Синхронизируем время с вышестоящими NTP-серверами с помощью команды:
sudo ntpdate -u 0.ubuntu.pool.ntp.org
Проверим корректность даты и времени на сервере с помощью команды:
date
Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.
Посмотрим список значений часового пояса для всех локаций с помощью команды:
sudo timedatectl list-timezones
Выбираем подходящее для вашей локации значение и меняем часовой пояс с помощью команды:
sudo timedatectl set-timezone Europe/Berlin
Обратите внимание, в данном руководстве рассматривается сервер, который находится в Берлине.
Снова проверяем корректность даты и времени на сервере с помощью команды:
date
Теперь необходимо загрузить и установить пакет конфигурации репозитория Puppet Agent.
Загрузим пакет конфигурации репозитория Puppet Agent с помощью команды:
wget https://apt.puppetlabs.com/puppet7-release-jammy.deb
Установим пакет конфигурации репозитория Puppet Agent с помощью команды:
sudo dpkg -i puppet7-release-jammy.deb
Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:
sudo apt update
Теперь установим Puppet Agent с помощью команды:
sudo apt install -y puppet-agent
Исполняемые файлы 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
Находим переменную “secure_path”, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.
Теперь необходимо подтвердить изменения в файле.
Нажимаем на кнопку “y”.
Нажимаем на кнопку “Enter”, чтобы подтвердить сохранение файла.
Теперь добавим путь к исполняемым файлам Puppet в переменную среды “PATH”.
Открываем конфигурационный файл “environment” в текстовом редакторе с помощью команды:
sudo vim /etc/environment
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Далее необходимо внести изменения в конфигурационный файл Puppet, открыв его в текстовом редакторе, с помощью команды:
sudo vim /etc/puppetlabs/puppet/puppet.conf
Нажимаем на кнопку “i”, чтобы перейти в режим редактирования, добавляем новый раздел “[main]” со следующими параметрами:
[main]
certname = puppet-agent.heyvaldemar.net
server = puppet.heyvaldemar.net
environment = production
runinterval = 15m
В данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Agent будет доступен из сети Интернет или в локальной сети вашей организации.
Также Puppet Server установлен на сервер puppet.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Server будет доступен из сети Интернет или в локальной сети вашей организации.
Обратите внимание, в параметре “runinterval” указывается промежуток времени между запросами агента к серверу Puppet.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Запускаем Puppet Agent и включаем его в автозапуск при запуске операционной системы с помощью команды:
sudo puppet resource service puppet ensure=running enable=true
Возвращаемся на сервер с установленным Puppet Server.
Теперь необходимо утвердить запрос сертификата для сервера, на котором установлен Puppet Agent, чтобы в последующем клиент смог получать конфигурацию от сервера Puppet.
Просмотрим клиентские запросы в очереди с помощью команды:
sudo puppetserver ca list
Подписываем клиентский запрос с помощью команды:
sudo puppetserver ca sign --certname puppet-agent.heyvaldemar.net
В данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Agent будет доступен из сети Интернет или в локальной сети вашей организации.
Клиентский запрос успешно подписан.
Далее можно просмотреть все подписанные и неподписанные клиентские запросы с помощью команды:
sudo puppetserver ca list --all
Обратите внимание, подписать все клиентские запросы в очереди можно с помощью команды:
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
Нажимаем на кнопку “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”.
Теперь нажмите на кнопку “Esc”, чтобы выйти из режима редактирования, а затем введите “:x” и нажмите на кнопку “Enter”, чтобы сохранить изменения и выйти из редактора.
Возвращаемся на сервер с установленным Puppet Agent.
Теперь необходимо получить конфигурацию для клиента с сервера Puppet с помощью команды:
sudo puppet agent -t
Далее можно проверить, что файл успешно создался и содержит текст, указанный ранее в манифесте, с помощью команды:
cat /tmp/puppetfile
Файл успешно создан и содержит текст, указанный в манифесте.
Пополнить запасы кофе автора
💡 Telegram | Boost
💖 PayPal
🏆 Patreon
💎 GitHub
🥤 BuyMeaCoffee
🍪 Ko-fi