Salt или Saltstack – это фреймворк автоматизации ИТ с открытым исходным кодом, который позволяет администраторам удаленно выполнять команды на нескольких машинах напрямую. Salt написана в основном на языке Python и построена по архитектуре Master и Minion. Мастер SaltStack – это центральный контроллер управления конфигурацией Salt, а миньоны – это серверы, управляемые мастером SaltStack, или же вы назвали миньоны целевыми серверами.
По умолчанию 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 Minions для подключения к 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
После добавления ключа Saltk GPG и репозитория выполните приведенную ниже команду 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
Замените параметр interface по умолчанию на локальный 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
После успешного выполнения команды на экране должно появиться следующее сообщение активен (работает), что указывает на то, что служба 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-адрес миньона в опции interface и введите имя хоста сервера в опции 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
Если все прошло успешно, на выходе вы получите активный (запущенный), что подтверждает, что служба salt-minion запущена.
Регистрация миньонов соли в Salt Master
На этом этапе служба salt-minion запущена. После этого миньоны соли отправляют запрос на регистрацию к Salt Master. Чтобы подать заявку на регистрацию Salt Minion, вы должны принять ключ отпечатков пальцев на Salt Master.
Перейдите на Salt Master и выполните приведенную ниже команду salt-key, чтобы получить список ключей отпечатков пальцев.
salt-key --finger-all
Здесь отпечатки пальцев серверов Salt Minion миньон1 и миньон2, которые все еще находятся в статусеНепринятые ключи‘.
Выполните приведенную ниже команду, чтобы принять ключ Salt Minion для серверов minion1 и minion2.
salt-key -a minion1 salt-key -a minion2
Вход Y , когда появится запрос на принятие ключа, и вы должны получить результат типа ‘Ключ для миньона minion1/2 принят‘.
Теперь снова проверьте список ключей отпечатков пальцев на Salt Master с помощью следующей команды.
salt-key --finger-all
Здесь отпечатки пальцев Salt Minion для миньон1 и миньон2 Серверы доступны в Принятые ключи раздел.
Теперь вы можете управлять серверами Salt Minion из Salt Master через командную строку Salt.
Выполните приведенную ниже команду salt, чтобы проверить соединение между Salt Master и Minion и проверить версию Salt на серверах Minion.
salt '*' test.ping salt '*' test.version
Если соединение между Salt Master и Minion установлено успешно, на выходе будет показано True будет отображаться. Кроме того, вы можете увидеть соль 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
Управление службами с помощью сервисного модуля
Далее вы можете использовать модуль состояния сервисов для управления сервисами на ваших серверах 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 для установки стека LEMP (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 и убедитесь, что каждая служба запущена и включена с помощью модуля состояния службы.
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.