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.

Добавление репозитория 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 по умолчанию /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 Minion
После настройки Salt Master следующим шагом является установка salt-minion и настройка серверов Minion для подключения к Salt Master.
Выполните команду dnf ниже, чтобы установить пакет salt-minion на ваши серверы Minion. Наберите y, чтобы подтвердить установку.
sudo dnf install 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 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 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
Управление службами через модуль 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'
Теперь создайте новый каталог конфигурации /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После выполнения команды вы должны получить подробную конфигурацию, как показано ниже.

Теперь выполните следующую команду, чтобы применить состояние lemp к серверам Minion.
sudo salt '*' state.apply lempВы должны увидеть сгенерированный отчет об автоматической установке. Установка пакетов LEMP Stack на обоих серверах Minion была успешной в этом случае.

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

Заключение
В заключение, вы теперь установили Salt на серверах AlmaLinux 9 шаг за шагом. Вы установили и настроили как Salt Master, так и Minions на серверах AlmaLinux, а также узнали основные способы использования модулей состояния Salt и создали свой первый проект состояния Salt для установки LEMP Stack.
Get new posts in your inbox
No spam. Unsubscribe anytime.