Как установить и настроить Puppet на систему Rocky Linux версии 9
Обновлено:
Опубликовано:
Используемые термины: Puppet, Rocky Linux, CentOS.
В данной инструкции мы бегло расскажем как установить и настроить систему управления конфигурациями Puppet. Также мы создадим простой манифест и применим его сценарий на клиенте. В качестве примера мы будем использовать Rocky Linux 9.
Предварительная настройка клиента и сервера
Установка и запуск сервера Puppet
Добавление клиента Puppet к серверу
Создание тестового манифеста и настройка клиента для его применения
Подготовка сервера и клиента
Выполним предварительные настройки как на сервере, так и всех клиентских машинах. В моем примере будет один сервер и один клиент.
Время
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