Поиск по сайту:

Как установить сервер Puppet и агент в Debian 11


На этой странице

  1. Необходимое условие
  2. Настройка полного доменного имени
  3. Добавление репозитория Puppet
  4. Установка сервера Puppet
  5. Настройка сервера Puppet
  6. Установка и настройка агента Puppet
  7. Регистрация агента Puppet на сервере Puppet
  8. Создание первого манифеста Puppet
  9. Проверка и применение манифестов Puppet
  10. Заключение

Puppet — это инструмент централизованного управления конфигурацией и автоматизации. DevOps создает управление конфигурацией для развертывания серверов и приложений, а вся конфигурация для автоматизации хранится на центральном «Кукольном сервере». После этого узлы \Агент\ извлекут новую конфигурацию из \Сервера кукол\ и применят заданное состояние.

Все соединения между узлами \Сервер марионеток\ и \Агент\. шифруются по умолчанию с использованием сертификата SSL/TLS. Puppet использует предметно-ориентированный язык (DSL) для описания конфигурации системы, и он похож на синтаксис Ruby.

В этом руководстве вы установите и настроите сервер и агент Puppet на Debian 11 Bullseye. Вы установите сервер Puppet на сервер с именем хоста puppet-server и агент Puppet на сервер с агентом имени хоста. В конце вы создадите первые манифесты марионеток для установки базового стека LEMP на узле агента.

Предпосылка

  • Вам понадобятся два разных сервера Debian 11.
    • Puppet-server с IP-адресом 192.168.5.100 и полным доменным именем puppet-server.localdomainl.lan.
    • Узел агента с IP-адресом 192.168.5.150 и полным доменным именем agent.localdomain.lan.

    Настройка полного доменного имени

    Сначала вы настроите полное доменное имя (FQDN) и файл /etc/hosts как на puppet-сервере, так и на агенте. Это гарантирует, что оба сервера могут обмениваться данными с локальным доменным именем.

    Чтобы настроить полное доменное имя, выполните приведенную ниже команду hostnamectl.

    Выполните следующую команду, чтобы настроить полное доменное имя puppet-server.localdomain.lan на puppet-server.

    hostnamectl set-hostname puppet-server.localdomain.lan

    Выполните следующую команду, чтобы настроить полное доменное имя agent.localdomain.lan на узле агента.

    hostnamectl set-hostname agent.localdomain.lan

    Затем отредактируйте файл /etc/hosts с помощью редактора vim, как показано ниже.

    sudo vim /etc/hosts

    Скопируйте и вставьте следующую конфигурацию.

    192.168.5.100   puppet-server.localdomain.lan
    192.168.5.150   agent.localdomain.lan

    Сохраните файл и выйдите.

    Наконец, выполните приведенную ниже команду ping, чтобы проверить соединение между puppet-сервером и агентом.

    ping puppet-server.localdomain.lan -c3
    ping agent.localdomain.lan -c3

    Если ваша конфигурация верна, вы увидите следующий вывод. Puppet-server.localdomain.lan разрешается в сервер 192.168.5.100, а agent.localdomain.lan разрешается в узел агента 192.168.5.150.

    Добавление репозитория марионеток

    По умолчанию Puppelabs предоставляет пакеты репозиториев для различных дистрибутивов Linux, включая последнюю версию Debian 11 Bullseye. На этом шаге вы добавите и установите репозиторий Puppet как на сервер puppet, так и на агент. На момент написания этой статьи последней версией Puppet была v7.x.

    Загрузите пакет репозитория с помощью приведенной ниже команды wget.

    wget https://apt.puppet.com/puppet7-release-bullseye.deb

    Затем установите файл deb puppet7-release-bullseye.deb с помощью приведенной ниже команды dpkg.

    sudo dpkg -i puppet7-release-bullseye.deb

    После завершения установки выполните приведенную ниже команду apt, чтобы обновить индекс пакетов Debian.

    sudo apt update

    Теперь вы готовы установить пакеты Puppet.

    Установка кукольного сервера

    На этом этапе вы будете устанавливать пакет сервера Puppet на puppet-server. На момент написания этой статьи последней версией Puppet была v7.

    Чтобы установить Puppet Server, выполните приведенную ниже команду apt. Эта команда также автоматически устанавливает другие пакеты, такие как Java OpenJDK.

    sudo apt install puppetserver

    Введите Y, чтобы подтвердить установку.

    После завершения установки вам нужно будет загрузить среду bash для Puppet Server.

    По умолчанию Puppet хранит свой двоичный файл в каталоге /opt/puppetlabs/bin. Выполните следующую команду, чтобы применить новую переменную среды PATH для Puppet Server.

    source /etc/profile.d/puppet-agent.sh
    echo $PATH

    При желании вы также можете применить переменную среды PATH, выполнив следующую команду.

    echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
    source ~/.bashrc

    Теперь проверьте переменную среды PATH с помощью приведенной ниже команды. Убедитесь, что каталог /opt/puppetlabs/bin находится в списке переменной среды PATH.

    echo $PATH

    После этого вы можете запустить команду puppetserver в обычном режиме. Ниже вы можете проверить версию Puppet.

    puppetserver -v

    Вы должны получить результат, аналогичный показанному на скриншоте ниже.

    Затем отредактируйте конфигурацию сервера Puppet /etc/default/puppetserver с помощью редактора vim.

    sudo vim /etc/default/puppetserver

    Измените максимальное выделение памяти для Puppet Server. Это зависит от вашей системной памяти. В этом руководстве мы выделяем 2 ГБ памяти и выделяем для сервера Puppet 1 ГБ. И мы будем использовать приведенную ниже конфигурацию.

    JAVA_ARGS="-Xms1g -Xmx1g"

    Сохраните файл конфигурации и выйдите.

    Затем перезагрузите диспетчер systemd, чтобы применить новый служебный файл Puppet.

    sudo systemctl daemon-reload

    Затем запустите и включите службу puppetserver с помощью приведенной ниже команды.

    sudo systemctl start enable --now puppetserver

    Служба puppetserver должна быть запущена. Выполните приведенную ниже команду, чтобы проверить puppetserver.

    sudo systemctl status puppetserver

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

    Кроме того, если вы используете в своей системе брандмауэр UFW, обязательно откройте порт 8140, который будет использоваться сервером Puppet.

    Выполните приведенную ниже команду, чтобы объединить все входящие соединения из локальной подсети 192.168.5.0/24 с Puppet Server через порт 8140.

    sudo ufw allow from 192.168.5.0/24 to any proto tcp port 8140
    sudo ufw status

    Ниже приведены текущие правила брандмауэра UFW, которые вы должны увидеть.

    Настройка кукольного сервера

    На этом шаге вы будете редактировать конфигурацию Puppet Server. И это можно сделать, отредактировав конфигурацию Puppet напрямую или создав конфигурацию с помощью командной строки puppet.

    Запустите приведенные ниже команды puppet, чтобы настроить сервер Puppet. Это будет настройка имя домена Puppet Server по умолчанию и интервал запуска в основном разделе, а также среда и dns_alt_names в разделе server.

    puppet config set server puppet-server.localdomain.lan --section main
    puppet config set runinterval 1h --section main

    puppet config set environment production --section server
    puppet config set dns_alt_names puppet-server,puppet-server.localdomain.lan --section server

    Теперь проверьте конфигурацию Puppet Server /etc/puppetlabs/puppet/puppet.conf с помощью приведенной ниже команды cat.

    cat /etc/puppetlabs/puppet/puppet.conf

    Вы должны увидеть конфигурацию Puppet Server, как показано ниже.

    Наконец, перезапустите службу puppetserver, чтобы применить новую конфигурацию, выполнив приведенную ниже команду systemctl.

    sudo systemctl restart puppetserver

    На этом вы завершили установку и настройку Puppet Server.

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

    На этом этапе вы будете устанавливать и настраивать агент Puppet на агенте клиентского компьютера.

    Перед установкой агента Puppet убедитесь, что вы выполнили настройку полного доменного имени и добавили репозиторий Puppet.

    Теперь давайте установим и настроим Puppet Agent.

    Установите пакет puppet-agent с помощью приведенной ниже команды apt.

    sudo apt install puppet-agent

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

    sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

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

    Далее вы настроите переменную среды PATH, чтобы добавить двоичный путь Puppet /opt/puppetlabs/bin/. Это позволяет запускать команду puppet напрямую, не указывая полный путь к двоичному файлу.

    source /etc/profile.d/puppet-agent.sh
    echo $PATH

    Другой способ сделать это — добавить новую переменную среды PATH в конфигурацию ~/.bashrc с помощью следующей команды.

    echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
    source ~/.bashrc

    Теперь проверьте конфигурацию переменной среды PATH с помощью следующей команды.

    echo $PATH

    Вы должны увидеть, что двоичный путь Puppet /opt/puppetlabs/bin добавляется в переменную среды PATH.

    Регистрация агента Puppet на сервере Puppet

    После установки агента Puppet вы теперь будете настраивать агент Puppet, чтобы зарегистрировать его на главном сервере Puppet.

    Во-первых, убедитесь, что полное доменное имя Puppet Server доступно с компьютера агента. Проверьте это с помощью приведенной ниже команды ping.

    ping puppet-server.localdomain.lan -c3

    Затем выполните приведенные ниже команды, чтобы настроить агент Puppet. Это определит доменное имя Puppet Server и ca_server в разделе агента.

    puppet config set server puppet-server.localdomain.lan --section agent
    puppet config set ca_server puppet-server.localdomain.lan --section agent

    Проверьте сгенерированную конфигурацию Puppet в файле /etc/puppetlabs/puppet/puppet.conf.

    cat /etc/puppetlabs/puppet/puppet.conf

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

    Теперь выполните приведенную ниже команду, чтобы перезапустить службу Puppet и применить новые изменения. Затем проверьте службу Puppet и убедитесь, что она активна и работает.

    sudo systemctl restart puppet
    sudo systemctl status puppet

    Ниже приведен вывод состояния службы Puppet.

    Затем выполните приведенную ниже команду, чтобы зарегистрировать агент Puppet на сервере Puppet. Эта команда сгенерирует новые сертификаты TLS и создаст новые запросы на подпись сертификата к серверу Puppet.

    puppet ssl bootstrap

    Теперь перейдите к терминалу Puppet Server и выполните приведенную ниже команду, чтобы проверить запросы на подпись сертификата, а затем проверьте подпись сертификата для агента Puppet agent.localdomain.lan.

    puppetserver ca list --all
    puppetserver ca sign --certname agent.localdomain.lan

    Вы должны увидеть сообщение, такое как Успешно подписанный запрос сертификата .....

    Затем выполните приведенную ниже команду, чтобы проверить список сертификатов на сервере Puppet.

    puppetserver ca list-all

    Вы должны увидеть два разных сертификата: сертификат для Puppet Server и Puppet Agent.

    Теперь снова перейдите к терминалу Puppet Agent, и вы должны увидеть такие сообщения, как «Уведомление: завершена инициализация SSL», что означает, что запросы на подпись сертификата успешно выполнены.

    На данный момент вы готовы создать новый первый манифест Puppet.

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

    На этом шаге вы создадите новые первые манифесты марионеток для установки стека LEMP (Nginx, MariaDB и PHP-FPM). Все манифесты для производственной среды должны храниться в каталоге Puppet Server /etc/puppetlabs/code/environments/production/.

    Измените текущий рабочий каталог на /etc/puppetlabs/code/environments/production/.

    cd /etc/puppetlabs/code/environments/production/

    Затем создайте новый каталог макета манифеста для стека LEMP в каталоге modules.

    mkdir -p modules/lemp/{manifests,files}

    Перейдите в каталог modules/lemp и создайте новый файл манифеста Puppet manifests/init.pp с помощью редактора vim/nano.

    cd modules/lemp/
    nano manifests/init.pp

    Скопируйте и вставьте следующий язык синтаксиса puppet для установки LEMP Stack, убедитесь, что все службы LEMP Stack запущены и работают, и создайте новый пользовательский файл index.html.

    class lemp {

        Package { ensure => 'installed' }
        $lemppackages = [ 'nginx', 'mariadb-server', 'php-fpm' ]
        package { $lemppackages: }

        Service { ensure => 'running', enable => 'true'}
        $lempsvc = [ 'nginx', 'mariadb', 'php7.4-fpm' ]
        service { $lempsvc: }

        file { '/var/www/html/index.html':
         ensure  => file,
         content => "<h1><center>Welcome to Nginx - Managed by Puppet</center></h1>",
         mode    => '0644',
       }

    }

    Сохраните файл и выйдите.

    Затем выполните приведенную ниже команду, чтобы проверить файл манифеста Puppet init.pp.

    puppet parser validate init.pp

    Если вы не видите никакого выходного сообщения, конфигурация правильная.

    Теперь создайте другую конфигурацию manifests/site.pp с помощью редактора vim/nano.

    cd /etc/puppetlabs/code/environments/production/
    vim manifests/sites.pp

    Определите целевой хост как agent.localdomain.lan и примените новый манифест Puppet lemp.

    node 'agent.localdomain.lan' {
        include lemp
    }

    Сохраните файл и выйдите.

    Снова проверьте конфигурацию манифеста Puppet, используя следующую команду.

    puppet parser validate site.pp

    Проверка и применение манифестов Puppet

    Теперь вы создали новый первый манифест Puppet для развертывания стека LEMP. В этот момент узел агента Puppet автоматически синхронизирует все манифесты с сервером Puppet и применит новую конфигурацию манифеста.

    Но также вы можете применить манифест Puppet вручную с компьютера агента Puppet.

    Вернитесь к агенту сервера терминалов и выполните приведенную ниже команду, чтобы применить манифесты Puppet вручную.

    puppet agent -t

    Это запустит манифест Puppet на компьютере с агентом Puppet и установит стек LEMP через манифесты Puppet lemp.

    Ниже приведен результат, который вы получите.

    Теперь запустите приведенную ниже команду, чтобы проверить каждую службу Nginx, MariaDB и PHP-FPM.

    sudo systemctl status nginx
    sudo systemctl status mariadb
    sudo systemctl status php7.4-fpm

    Вы должны увидеть, что каждая служба активна и работает.

    Теперь откройте веб-браузер и введите IP-адрес вашего узла агента в адресной строке. И вы должны увидеть пользовательский файл index.html ниже.

    Теперь вы успешно применили развертывание стека LEMP к машине с агентом, используя манифесты Puppet.

    Заключение

    Поздравляем! Теперь вы успешно установили сервер Puppet и агент на Debian 11 Bullseye. Кроме того, вы узнали, как создать первые манифесты Puppet для установки LEMP Stack.

    OНа следующем шаге вам может быть интересно настроить еще один узел и создать более сложный манифест Puppet для ваших развертываний.