Блог-шпаргалка

Картинка

SaltStack

Категория -> linux
Обновлено: 2026-04-15

Вот и настал тот момент, когда парк моих серверов вырос до размера, которым управлять стало времязатратно, делая одни и те же манипуляции на каждом. Банально обновить систему - это подключиться к одному, выполнить определённую последовательность команд, затем к другому, затем к третьему и т.д. Давно я подумывал о системе управления конфигурациями. Почитал про пятёрку самых популярных и остановился на SaltStack. Давайте отвечу сразу на вопрос: - "Почему не Ансибл"? Идите на хуй со своим ансиблом! Терпеть не могу то, что у всех на устах 😒 Ясно выразился? 🤨

Ниже, процесс установки взят исключительно из официальной документации. Все действия производим от рута. В общем погнали ставить!

SSH’имся к свежеустановленому debian’чику.

Убеждаемся, что папка keyrings существует и имеет права 755

stat /etc/apt/keyrings/
  File: /etc/apt/keyrings/
  Size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 253,0	Inode: 131612      Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-04-15 03:07:41.076000000 +1000
Modify: 2026-04-14 22:38:59.068000000 +1000
Change: 2026-04-14 22:38:59.068000000 +1000
 Birth: 2026-04-14 11:11:38.976485000 +1000

Еже-ли нет, то

mkdir -m 755 -p /etc/apt/keyrings

Ставим необходимые пакеты

apt install curl gnupg2

Даунлоадим публичный ключ

curl -fsSL https://packages.broadcom.com/artifactory/api/security/keypair/SaltProjectKey/public | gpg --dearmor | tee /etc/apt/keyrings/salt-archive-keyring.pgp > /dev/null

Добавляем оф репу

curl -fsSL https://github.com/saltstack/salt-install-guide/releases/latest/download/salt.sources | tee /etc/apt/sources.list.d/salt.sources

Апдейтим метаданные

apt update

Ставим мастера

apt install salt-master

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

apt install salt-minion

Настраиваем мастера

Дефолтный конф лежит по пути /etc/salt/master, который неплохо закомментирован и зная немного буржуйский, можно без труда разобраться чё-куда-как, но…

...но по понятиям бест-практикс мы будем писать свои конфиги и размещать их в /etc/salt/master.d/

По умолчанию мастер висит на всех интерфейсах и слушает 4505 и 4506 порты. Укажем мастеру адрес, по которому он будет доступен, порт для запросов<->ответов и порт публикации

vim /etc/salt/master.d/network.conf
interface: 192.0.2.20
ret_port: 4506
publish_port: 4505

Стандарт для загруженных сред - один рабочий поток на каждые 200 миньонов. Значение этого параметра не должно превышать 1,5 раза количество доступных ядер CPU. Создадим конфиг и укажем в нём количество рабочих потоков

vim /etc/salt/master.d/thread_options.conf
worker_threads: 2

Настраиваем минионы

Аналогично мастеру, будем пилить настройки в /etc/salt/minion.d/

Указываем IP-адрес мастера

vim /etc/salt/minion.d/master.conf
master: 192.0.2.20

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

vim /etc/salt/minion.d/id.conf
id: test-minion

Стартуем сервисы!

На мастере

systemctl start salt-master

На минионах соответственно

systemctl start salt-minion

Статусом смотрим, если всё актив и ранниг, то заебись!

Указав в конфиге миниона IP-адрес мастера, он (минион), при запуске, автоматически отправляет запрос аутентификации мастеру, предоставив ему открытый и сгенерированный при установке RSA ключ.

Посмотреть запросы аутентификации можно на мастере командой

salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
test-minion
Rejected Keys:

Видим, что у нас есть один непринятый ключ, именуемый test-minion. Добавим его

salt-key -a test-minion

Ещё раз посмотрим что там у нас с ключами

salt-key
Accepted Keys:
test-minion
Denied Keys:
Unaccepted Keys:
Rejected Keys:

Отлично! Теперь test-minion у нас в принятых

Заключительным шагом установки будет отправка тестового пинга с мастера на все подключённые узлы

salt '*' test.version
test-minion:
    3007.13

Готово!