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

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

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

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

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

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

sudo apt-get install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY — свободно распространяемым клиентом для различных протоколов удаленного доступа, включая SSH, Telnet, rlogin.

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

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

  • 8140 — для работы Puppet Agent.

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

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

sudo hostnamectl set-hostname puppet.heyvaldemar.net

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

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

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

echo "3.121.241.77 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/puppet6-release-bionic.deb

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

udo dpkg -i puppet6-release-bionic.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 "18.197.232.105 puppet-agent.heyvaldemar.net puppet-agent" | sudo tee -a /etc/hosts

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

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

echo "3.121.241.77 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/puppet6-release-bionic.deb

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

sudo dpkg -i puppet6-release-bionic.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

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

Автор

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

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

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