Как установить и настроить Puppet на систему Rocky Linux версии 9

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: Puppet, Rocky Linux, CentOS.

В данной инструкции мы бегло расскажем как установить и настроить систему управления конфигурациями Puppet. Также мы создадим простой манифест и применим его сценарий на клиенте. В качестве примера мы будем использовать Rocky Linux 9.

Подготовка сервера и клиента

Выполним предварительные настройки как на сервере, так и всех клиентских машинах. В моем примере будет один сервер и один клиент.

Время

1. Устанавливаем часовой пояс:

timedatectl set-timezone Europe/Moscow

* данной командой мы установим часовой пояс по московскому времени.

Посмотреть все доступные часовые пояса можно командой:

timedatectl list-timezones

2. Устанавливаем и запускаем службу для автоматической синхронизации времени:

dnf install chrony

systemctl enable chronyd --now

Имена сервера и клиентов

Puppet чувствителен к именам узлов, на которых запускаются агенты. Если у нас нет внутреннего сервера DNS, задаем имена как сервера, так и клиентов в файле hosts:

vi /etc/hosts

Добавляем строки, соответствующие IP-адресу узла и его имени: 

192.168.1.15 puppet-srv.dmosk.local
192.168.1.16 puppet-cl.dmosk.local

* предполагается, что имя сервера будет puppet-srv.dmosk.local, а клиента — puppet-cl.dmosk.local.

Также зададим имена компьютеров.

а) на сервере:

hostnamectl set-hostname puppet-srv.dmosk.local

б) на клиенте:

hostnamectl set-hostname puppet-cl.dmosk.local

Брандмауэр

На стороне сервера необходимо открыть порт 8140, к которому будут обращаться агенты. Для этого выполняем команду:

firewall-cmd --permanent --add-port=8140/tcp

firewall-cmd --reload

Установка и настройка Puppet Server

Сначала установим серверную часть. Подключаем репозиторий:

rpm -ih https://yum.puppet.com/puppet-release-el-$(rpm -E %{rhel}).noarch.rpm

Устанавливаем Puppet Server:

dnf install puppetserver

Разрешаем автозапуск puppet-сервера:

systemctl enable puppetserver

Открываем конфигурационный файл:

/etc/puppetlabs/puppet/puppet.conf

Добавим в него секцию main со следующими опциями:

[main]
certname = puppet-srv.dmosk.local
server = puppet-srv.dmosk.local
runinterval = 60m

* в данной конфигурации мы указываем, что имя сервера puppet puppet-srv.dmosk.local. Также мы задали имя сертификата, который будет сгенерирован на сервере.

Запускаем службу puppet:

systemctl start puppetserver

Настройка и запуск агента

Прежде чем начать настройку агента, на сервере создаем для него сертификат:

puppetserver ca sign --certname puppet-cl.dmosk.local

* где puppet-cl.dmosk.local — имя компьютера для подключаемого агента.

Теперь идем на клиента. Выполним на нем установку puppet и запустим созданный на сервере сценарий. Также настроим запуск в качестве службы.

Установка и запуск

Подключаем репозиторий:

rpm -ih https://yum.puppet.com/puppet-release-el-$(rpm -E %{rhel}).noarch.rpm

Устанавливаем puppet командой:

dnf install puppet

Выполняем тестовое подключение к серверу с компьютера агента:

puppet agent -t --server=puppet-srv.dmosk.local

Мы должны увидеть что-то на подобие:

Info: Using environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin

Notice: Requesting catalog from puppet-srv.dmosk.local:8140 (192.168.1.15)
Notice: Catalog compiled by puppet-srv.dmosk.local
Info: Caching catalog for puppet-cl.dmosk.local
Info: Applying configuration version '1764059307'

Notice: Applied catalog in 0.01 seconds

Настройка и запуск службы

Редактируем конфигурационный файл puppet:

vi /etc/puppetlabs/puppet/puppet.conf

Добавляем секцию с настройкой:

[agent]
server = puppet-srv.dmosk.local

Еще раз выполним:

puppet agent -t

* обратите внимание, что теперь мы не указываем имя сервера puppet.

Мы должны получить такой же результат тестового подключения, который получили выше.

Запускаем службу puppet, а также разрешаем ее автозапуск:

systemctl enable --now puppet

Проверяем состояние командой:

systemctl status puppet

Создание и применение тестового манифеста

Сценарии с настройками для клиентов в puppet называются манифестами. Удобнее делить правила по различным файлам. Для этого на сервере создадим каталог для тестового класса:

mkdir -p /etc/puppetlabs/code/environments/production/manifests/test

* данный класс test нам нужно будет привязать к агенту, чтобы он применял манифесты, хранящиеся в созданном каталоге.

Создаем первый сценарий:

vi /etc/puppetlabs/code/environments/production/manifests/test/init.pp

file { '/tmp/hello-file':
  ensure  => present,
  owner   => 'root',
  group   => 'wheel',
  mode    => '0644',
  content => 'From Puppet',
}

* правило создаст файл hello-file, если его нет, в каталоге /tmp. Задаст ему владельца root и группу-владельца wheel. Добавит в него текст «From Puppet» и задаст права 644.

Теперь нам необходимо привязать к созданному классу нашего клиента. Для этого создаем каталог:

mkdir /etc/puppetlabs/code/environments/production/nodes

А в нем создаем файл с именем сертификата, который соответствует клиенту:

vi /etc/puppetlabs/code/environments/production/nodes/puppet-cl.dmosk.local.yaml

На клиенте пробуем выполнить команду:

puppet agent -t

В каталоге /tmp должен появится новый файл. Попробуем прочитать его содержимое:

cat /tmp/hello-file

# CentOS # DevOps # Linux # Rocky Linux # UNIX # Настройки # Серверы # Управление
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Нужна бесплатная консультация?

Инструкции

Как сделать скриншот экрана на компьютере — несколько популярных способов

Как оптимизировать веб-сервер NGINX для стабильной и быстрой работы

Установка Nginx + PHP + MySQL + PostgreSQL на Astra Linux

Настройка аутентификации по SSH через Active Directory на CentOS

Как установить и подготовить к работе на Rocky Linux систему управления конфигурациями puppet

Установка веб-сервера Apache на FreeBSD

Как установить и использовать OpenVZ на CentOS

Другие инструкции

Все статьи

Задать вопрос по электронной почте:





Реклама