IT Automation · 7 min read · Oct 26, 2025

Начало работы с Salt IT Automation Framework на AlmaLinux 9

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

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

Этот учебник покажет вам, как установить Salt на серверах AlmaLinux 9. Вы также узнаете основные способы использования модулей Salt и создадите первый проект состояния Salt. В этом случае вы создадите проект состояния Salt для установки LEMP Stack.

Предварительные условия

Чтобы начать с этого руководства, убедитесь, что у вас есть следующее:

  • 3 сервера AlmaLinux 9.
  • Непользователь с правами администратора sudo.
  • SELinux со статусом Permissive или Disabled.

Настройка Firewalld на Salt Master

Перед установкой Salt вам необходимо открыть порты 4505 и 4506 на сервере Salt Master, которые будут использоваться миньонами Salt для подключения к Salt Master. Для этого вы будете использовать Firewalld.

Выполните следующую команду, чтобы открыть порты 4505 и 4506 для сервера Salt Master.

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

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

sudo firewall-cmd --reload  
sudo firewall-cmd --list-all

После выполнения команды порты 4505 и 4506 добавлены в firewalld.

настройка firewalld

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

Пакеты Salt доступны в официальном репозитории Salt. Теперь вы добавите репозиторий Salt на все ваши серверы AlmaLinux, как на Salt Master, так и на Minions.

Выполните команду ниже, чтобы импортировать GPG-ключ Salt.

sudo rpm --import https://repo.saltproject.io/salt/py3/redhat/9/x86_64/SALT-PROJECT-GPG-PUBKEY-2023.pub

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

curl -fsSL https://repo.saltproject.io/salt/py3/redhat/9/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

добавить репозиторий

После добавления GPG-ключа Salt и репозитория выполните команду dnf ниже, чтобы проверить список доступных репозиториев на ваших системах и загрузить метаданные для всех доступных репозиториев.

sudo dnf repolist  
sudo dnf makecache

Предполагая, что команда выполнена успешно, вывод, который вы получите, должен быть похож на следующий:

перезагрузить репозиторий

Установка и настройка Salt Master

После добавления репозитория Salt вы установите и настроите пакет salt-master на основном сервере Salt Master.

Установите пакет salt-master, используя команду dnf ниже. Введите y, когда будет предложено продолжить установку.

sudo dnf install salt-master

установить salt-master

После завершения установки откройте конфигурацию Salt по умолчанию /etc/salt/master с помощью следующей команды редактора nano.

sudo nano /etc/salt/master

Измените параметр интерфейса по умолчанию на ваш локальный IP-адрес и параметр ID на имя вашего сервера. В этом случае сервер Salt Master настроен с локальным IP-адресом 192.168.5.50 и именем хоста master.

interface: 192.168.5.50  
id: master

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

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

sudo systemctl start salt-master  
sudo systemctl enable salt-master

Наконец, проверьте службу salt-master, чтобы убедиться, что служба работает, выполнив команду ниже.

sudo systemctl status salt-master

При успешной работе вывод должен быть active (running), что указывает на то, что служба salt-master работает.

проверить salt-master

Установка и настройка Salt Minion

После настройки Salt Master следующим шагом является установка salt-minion и настройка серверов Minion для подключения к Salt Master.

Выполните команду dnf ниже, чтобы установить пакет salt-minion на ваши серверы Minion. Наберите y, чтобы подтвердить установку.

sudo dnf install salt-minion

установить salt-minion

После установки откройте конфигурацию Salt по умолчанию /etc/salt/minion с помощью команды редактора nano ниже.

sudo nano /etc/salt/minion

В параметре master введите IP-адрес Salt Master.

master: 192.168.5.50

Введите локальный IP-адрес миньона в параметре интерфейса и введите имя сервера в параметре id.

interface: 192.168.5.20  
id: minion1

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

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

sudo systemctl start salt-minion  
sudo systemctl enable salt-minion

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

sudo systemctl status salt-minion

Если все прошло хорошо, вывод будет active (running), что подтверждает, что служба salt-minion работает.

проверить salt-minion

Регистрация Salt Minions в Salt Master

На данный момент служба salt-minion работает. При этом Salt Minions отправляют запрос на регистрацию себя в Salt Master. Чтобы подать заявку на регистрацию Salt Minion, вы должны принять ключ отпечатка на Salt Master.

Перейдите к Salt Master и выполните команду salt-key ниже, чтобы получить список ключей отпечатков.

salt-key --finger-all

Здесь отпечатки серверов Salt Minion minion1 и minion2, которые все еще находятся в статусе ‘Unaccepted Keys‘.

список ключей

Выполните команду ниже, чтобы принять ключ Salt Minion для обоих серверов minion1 и minion2.

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

Введите Y, когда будет предложено принять ключ, и вы должны получить вывод, такой как ‘Key for minion minion1/2 accepted‘.

принять ключи

Теперь снова проверьте список ключей отпечатков на Salt Master, используя команду ниже.

salt-key --finger-all

Здесь отпечаток Salt Minion для серверов minion1 и minion2 доступен в разделе Accepted Keys.

Теперь вы можете управлять серверами Salt Minion с помощью Salt Master через командную строку Salt.

Выполните команду salt ниже, чтобы проверить соединение между Salt Master и Minions и проверить версию Salt на серверах Minion.

salt '*' test.ping  
salt '*' test.version

Если соединение между Salt Master и Minion успешно, будет отображен вывод True. Также вы можете увидеть, что Salt 3006.4 установлен, что является результатом параметра test.version.

тест salt

Кроме того, вы можете указать целевой миньон, используя команду salt следующим образом.

salt minion1 test.ping

Основное использование модуля состояния Salt

В следующем разделе вы узнаете, как использовать модуль состояния Salt для управления серверами Minion. Вы изучите некоторые модули состояния Salt, такие как cmd для выполнения произвольных команд Linux, pkg для управления пакетами и репозиториями, а также модуль service для управления службами.

Выполнение произвольной команды через модуль cmd

Выполните команду ниже, чтобы запустить конкретные команды Linux через модуль состояния cmd. В этом примере вы проверите детали ядра Linux через команду uname -a.

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

Управление пакетами и репозиториями через модуль pkg

Теперь используйте следующий модуль состояния pkg для управления пакетами и репозиториями на ваших серверах Minion.

Проверьте список репозиториев через pkg.list_repos, затем обновите репозитории через pkg.refresh_db.

salt '*' pkg.list_repos  
salt '*' pkg.refresh_db

Вы также можете проверить список доступных обновлений пакетов, используя аргумент pkg.list_upgrades ниже.

salt '*' pkg.list_upgrades

Чтобы установить конкретный пакет, используйте следующий pkg.install ниже.

salt '*' pkg.install vim

pkg install

Управление службами через модуль service

Далее вы можете использовать модуль состояния service для управления службами на ваших серверах Minion.

Используйте аргумент service.available, чтобы убедиться, что служба доступна на целевом сервере. Или используйте аргумент service.enabled, чтобы убедиться, что целевая служба включена, или вы также можете использовать service.get_running, чтобы убедиться, что служба работает.

salt '*' service.available chronyd  
salt '*' service.enabled chronyd  
salt '*' service.get_running

проверка службы

Наконец, вы также можете проверить команду запуска, которая выполняется конкретной службой, используя аргумент service.execs.

salt '*' service.execs

Создание первого состояния Salt

В этом разделе вы создадите первый проект состояния Salt для установки LEMP Stack (Nginx, MariaDB и PHP-FPM) на целевые серверы Minion.

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

salt '*' cmd.run 'sudo dnf module enable nginx:1.22 -y'  
salt '*' cmd.run 'sudo dnf module enable php:8.1 -y'

включить модуль репозитория через salt

Теперь создайте новый каталог конфигурации /srv/salt/, который будет использоваться для хранения вашего состояния Salt.

mkdir -p /srv/salt/

Выполните команду ниже, чтобы создать новый каталог проекта /srv/salt/lemp и файл init.sls.

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

Вставьте следующую конфигурацию в файл. В этом случае вы установите пакеты LEMP Stack на серверах Minion через модуль состояния pkg и убедитесь, что каждая служба работает и включена, используя модуль состояния service.

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

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

Затем выполните команду ниже, чтобы показать детали конфигурации состояния для проекта lemp.

sudo salt * state.show_sls lemp

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

проверить состояние salt

Теперь выполните следующую команду, чтобы применить состояние lemp к серверам Minion.

sudo salt '*' state.apply lemp

Вы должны увидеть сгенерированный отчет об автоматической установке. Установка пакетов LEMP Stack на обоих серверах Minion была успешной в этом случае.

применить состояние salt

Ниже приведены детали, когда службы работают и включены.

каждая служба работает

Заключение

В заключение, вы теперь установили Salt на серверах AlmaLinux 9 шаг за шагом. Вы установили и настроили как Salt Master, так и Minions на серверах AlmaLinux, а также узнали основные способы использования модулей состояния Salt и создали свой первый проект состояния Salt для установки LEMP Stack.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.