Вот и настал тот момент, когда парк моих серверов вырос до размера, которым управлять стало времязатратно, делая одни и те же манипуляции на каждом. Банально обновить систему - это подключиться к одному, выполнить определённую последовательность команд, затем к другому, затем к третьему и т.д. Давно я подумывал о системе управления конфигурациями. Почитал про пятёрку самых популярных и остановился на 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
Готово!