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

Как настроить SaltStack Master и Minion в Rocky Linux


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

  1. Предпосылки
  2. Настройка файла /etc/hosts
  3. Добавление репозитория SaltStack
  4. Установка SaltStack Master
  5. Установка миньона SaltStack
  6. Добавление серверов Minion в SaltStack Master
  7. Выполнение произвольной команды с помощью SaltStack
  8. Установка стека LEMP с состоянием SaltStack
  9. Заключение

Salt или Saltstack — это среда автоматизации ИТ с открытым исходным кодом, которая позволяет администраторам выполнять команды удаленно на нескольких машинах напрямую. Salt в основном написан на Python и разработан с использованием архитектуры Master и Minion. SaltStack master — это центральный контроллер управления конфигурацией Salt, а Minions — это серверы, управляемые SaltStack Master, или вы назвали миньоны целевыми серверами.

Мастер SaltStack по умолчанию работает на ОС Linux, но миньоны могут быть любой операционной системой. Saltstack — это революционное управление конфигурацией для автоматизации развертывания, удаленного выполнения задач и инфраструктуры как кода. SaltStack также можно использовать для предоставления нескольких серверов инфраструктуры, включая физические и виртуальные серверы, а также облако.

Следуя этому руководству, вы установите SaltStack Master и Minion на серверы Rocky Linux. Кроме того, вы узнаете, как использовать Salt для запуска произвольных команд из SaltStack Master против Salt Minions. И в конце вы также узнаете, как создать состояние Salt для установки базового стека LEMP (Linux, Nginx, MariaDB и PHP-FPM).

Предпосылки

Чтобы выполнить это руководство, вам потребуется как минимум два или более серверов Rocky Linux. На всех этих серверах должен быть пользователь без полномочий root с привилегиями root/administrator.

Настройка файла /etc/hosts

В этом примере мы будем использовать три сервера Rocky Linux для установки SaltStack. Один сервер будет использоваться в качестве Мастера, а два сервера будут использоваться в качестве миньонов.

Ниже приведены подробные серверы Rocky Linux, которые мы будем использовать:

Hostname    IP Address      Used as
---------------------------------------------
master      192.168.5.10    SaltStack Master
minion1     192.168.5.15    SaltStack Minion
minion2     192.168.5.16    SaltStack Minion

Перед установкой пакетов SaltStack вы настроите файл /etc/hosts на каждом хосте Linux.

Отредактируйте файл /etc/hosts с помощью следующей команды.

sudo nano /etc/hosts

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

master 192.168.5.10
minion1 192.168.5.15
minion2 192.168.5.16

Когда вы закончите, сохраните и закройте файл.

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

Пакеты SaltStack доступны в официальном репозитории. Вы добавите репозиторий SaltStack и ключ GPG на все ваши серверы Rocky Linux.

Выполните следующую команду, чтобы импортировать ключ GPG для репозитория SaltStack. Затем добавьте репозиторий SaltStack. В этом примере вы добавите последнюю версию репозитория SaltStack.

sudo rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

Теперь выполните следующую команду, чтобы проверить список репозиториев на вашем сервере Rocky Linux. Затем обновите и создайте новые метаданные для всех доступных репозиториев.

Вы должны увидеть, что репозиторий SaltStack добавлен на сервер Rocky Linux.

sudo dnf repolist
sudo dnf makecache

Установка SaltStack Master

Вы добавили репозиторий SaltStack на все ваши серверы Rocky Linux. Теперь вы установите и настроите Мастера SaltStack на главном сервере.

Во-первых, запустите команду DNF ниже, чтобы установить пакет salt-master. Этот пакет является основным для установки SaltStack Master.

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

sudo dnf install salt-master

После завершения установки отредактируйте конфигурацию SaltStack Master \/etc/salt/master\, используя приведенную ниже команду.

sudo nano /etc/salt/master

Раскомментируйте опцию «интерфейс:» и измените IP-адрес на IP-адрес вашего «главного» сервера. В этом примере IP-адрес SaltStack Master — «192.168.5.10».

interface: 192.168.5.10

Сохраните и закройте файл, когда закончите.

Затем включите службу \salt-master\ для запуска при загрузке системы и запустите службу \salt-master\. Затем проверьте и подтвердите службу «мастер соли».

Вы должны увидеть, что служба \salt-master\ включена и работает.

sudo systemctl enable salt-master && sudo systemctl start salt-master
sudo systemctl status salt-master

На SaltStack Master вам нужно будет открыть TCP-порты 4505 и 4506, которые будут использоваться для подключения SaltStack Minions к SaltStack Master.

Выполните приведенную ниже команду \firewall-cmd\, чтобы открыть порты 4505 и 4506. Затем перезагрузите файл Firewalld.

sudo firewall-cmd --zone=public --permanent --add-port={4505,4506}/tcp
sudo firewall-cmd --reload

Наконец, проверьте и подтвердите правила Firewalld, используя следующую команду. И вы должны получить порты 4505 и 4506, доступные на Firewalld.

sudo firewall-cmd --list-all

Установка миньона SaltStack

Вы установили и настроили SaltStack Master. Теперь вы установите и настроите SaltStack Minion как на серверах minion1, так и на серверах minion2.

Переместите серверы «minion1» и «minion2», затем выполните приведенную ниже команду DNF, чтобы установить пакет «salt-minion». Этот пакет должен быть установлен на всех хостах SaltStack Minion.

Введите Y, чтобы подтвердить установку, и нажмите ENTER. Начнется установка \salt-minion\.

sudo dnf install salt-minion

После завершения установки отредактируйте файл конфигурации SaltStack Minion \/etc/salt/minion\, используя приведенную ниже команду.

sudo nano /etc/salt/minion

Раскомментируйте параметр \master:\ и добавьте IP-адрес или имя хоста SaltStack Master. В этом примере мастер SaltStack работает на IP-адресе сервера \192.168.5.10\.

master: 192.168.5.10

Сохраните и закройте файл, когда закончите.

Затем выполните следующую команду, чтобы включить службу \salt-minion\ и запустить ее. Затем проверьте и подтвердите службу \salt-minion\.

Вы должны увидеть, что служба \salt-minion\ включена и будет автоматически запускаться при запуске системы. Текущее состояние службы \salt-minion\ — работает.

sudo systemctl enable salt-minion && sudo systemctl start salt-minion
sudo systemctl status salt-minion

Добавление серверов Minion в SaltStack Master

Вы завершили установку SaltStack Master на «главном» сервере и SaltStack Minion на серверах «minion1» и «minion2». Чтобы добавить SaltStack Minions в SaltStack Master, вы примете отпечаток ключа обоих серверов «minion1» и «minion2» с «главного» сервера.

Вернитесь к главному серверу и запустите команду соли ниже, чтобы проверить все доступные ключевые отпечатки пальцев. Вы должны увидеть два «Непринятых ключа» от серверов «minion1» и «minion2».

salt-key --finger-all

Чтобы принять отпечаток ключа серверов «minion1» и «minion2», выполните приведенную ниже команду «солт-ключ». И вам будет предложено принять отпечаток ключа, введите Y для подтверждения и добавьте ключ.

salt-key -a minion1
salt-key -a minion2

Затем проверьте и подтвердите все доступные ключевые отпечатки пальцев, используя приведенную ниже команду. И вы должны получить оба ключа отпечатков пальцев сервера minion1 и minion2, добавленных к мастеру SaltStack. Оба ключевых отпечатка доступны в разделе «Принятые ключи».

salt-key --finger-all

После добавления серверов SaltStack Minion в SaltStack Master запустите следующую команду соли на «главном» сервере, чтобы проверить и пропинговать серверы «minion1» и «minion2».

Если ваша конфигурация прошла успешно, вы должны вывести сообщение «True», что означает, что серверы SaltStack Minion добавлены в SaltStack Master.

salt minion1 test.ping
salt minion2 test.ping

Вы также можете использовать звездочку * для выбора всех серверов SaltStack Minion.

salt '*' test.ping

Вы также можете проверить текущую версию SaltStack, установленную на серверах «minion1» и «minion2», используя приведенную ниже команду.

На момент написания этой статьи последней версией программного обеспечения SaltStack была v3004.2, которая установлена на всех серверах SaltStack.

salt '*' test.version

Запуск произвольной команды с помощью SaltStack

Saltstack позволяет выполнять произвольные команды с главного сервера на все серверы-миньоны. Для этого вам нужно будет использовать исполнительный модуль, предоставленный Saltstack.

Запустите приведенную ниже команду соли с главного сервера. Это выполнит команду uname -a на всех серверах миньонов, и эта команда выполняется через модуль cmd.

salt '*' cmd.run 'uname -a'

Как видно на следующем снимке экрана, каждый миньон-сервер возвращает вывод команды uname -a.

Другой пример — вы можете использовать модуль pkg для управления установкой пакетов, репозиторием и всем, что связано с управлением пакетами. Это поддерживает несколько дистрибутивов Linux, включая дистрибутивы на основе RHEL, такие как CentOS и Rocky Linux, а также системы на основе Debian, такие как Ubuntu.

Обновите доступные репозитории на всех серверах миньонов.

salt '*' pkg.refresh_db

Проверьте пакет bash, используя приведенную ниже команду соли.

salt '*' pkg.show bash

Установите пакет с именем chrony на все серверы миньонов.

salt '*' pkg.install chrony

Проверьте список репозиториев на всех миньонах сервера.

salt '*' pkg.list_repos

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

salt '*' pkg.list_upgrades

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

Проверьте, доступен ли сервис хронид или нет.

salt '*' service.available chronyd

Включите запуск службы chronyd при запуске системы на всех серверах-миньонах.

salt '*' service.enabled chronyd

Проверка списка запущенных сервисов на всех серверах.

salt '*' service.get_running

Проверьте команду ExecStart= для каждой службы, доступной на всех серверах.

salt '*' service.execs

Установка стека LEMP с состоянием SaltStack

Вы изучили основную команду соли для запуска произвольной команды на всех серверах SaltStack Minion. Теперь вы создадите новый файл состояния SaltStack для установки базового стека LEMP (Linux, Nginx, MariaDB и PHP-FPM). Здесь вы можете использовать SaltStack для управления конфигурацией вашей серверной инфраструктуры и автоматического развертывания приложений.

Репозиторий Rocky Linux предоставляет несколько версий пакетов Nginx, MariaDB и PHP-FPM. Чтобы установить последнюю версию этих пакетов, вам необходимо включить ее с помощью модуля диспетчера пакетов DNF.

На момент написания этой статьи не существовало модели SaltStack, эквивалентной команде \dnf module\ для распространения на основе RHEL. Таким образом, вы включите модуль вручную с помощью произвольной команды SaltStack.

Выполните следующую команду, чтобы включить модуль для Nginx v1.20, MariaDB v10.5 и пакетов PHP v8.0.

salt '*' cmd.run 'sudo dnf module enable nginx:1.20 -y'
salt '*' cmd.run 'sudo dnf module enable mariadb:10.5 -y'
salt '*' cmd.run 'sudo dnf module enable php:8.0 -y'

Теперь создайте новый каталог управления центральной конфигурацией \/srv/salt/lemp\ и создайте новый файл \init.sls\ с помощью приведенной ниже команды.

mkdir -p /srv/salt/lemp
nano /srv/salt/lemp/init.sls

Добавьте следующую конфигурацию в файл. В этом примере мы создадим состояние соли с именем \lemp\ для установки пакетов стека LEMP. Кроме того, мы позаботимся о том, чтобы все службы стека LEMP (Nginx, MariaDB и PHP-FPM) были включены и работали на всех серверах SaltStack Minion.

lemp_stack:
 pkg.installed:
   - pkgs:
     - nginx
     - mariadb-server
     - php
     - php-fpm

nginx:
  service.running:
    - enable: True
    - reload: True

mariadb:
  service.running:
    - enable: True
    - reload: True

php-fpm:
  service.running:
    - enable: True
    - reload: True

Когда вы закончите, сохраните и закройте файл.

Теперь, чтобы проверить конфигурацию состояния соли, используйте приведенную ниже команду соли. Эта команда проверит и проверит вашу конфигурацию состояния соли на серверах SaltStack Minion.

sudo salt * state.show_sls lemp

Чтобы применить состояние соли ко всем серверам SaltStack Minion, вы можете использовать приведенную ниже команду соли. Теперь стек LEMP будет автоматически установлен на серверах «minion1» и «minion2».

sudo salt '*' state.apply lemp

На следующем снимке экрана видно, что стек LEMP установлен как на серверах «minion1», так и на серверах «minion2».

Заключение

В этом руководстве вы завершили установку SaltStack Master и SaltStack Minion на серверах Rocky Linux. Вы также изучили основы использования команды соли для запуска произвольной команды против SaltStack Minion. В конце вы также узнали, как создать конфигурацию состояния соли для автоматической установки стека LEMP и настроить SaltStack в качестве управления конфигурацией для развертывания приложений.