Перейти к основному содержимому

Master-серверы

Интеграция существующего сервера Salt Master с Salt.Box

Данная инструкция предназначена для пользователей, которые хотят подключить существующий сервер Salt Master к развёрнутому программному комплексу Salt.Box.

примечание

Предполагается, что развёртывание Salt.Box выполнено в контейнеризаторе приложений Docker в соответствии с разделом онлайн-документации Развёртывание сервера Salt.Box.

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

  • Сервер Salt Master (хост с установленным из официального репозитория серверным компонентом системы SaltStack — пакетом salt-master версии 3006.9 или выше).

  • Сервер Salt.Box с доступом к его Redis-экземпляру из локальной сети.

Проверка доступности сервера Redis

Перед интеграцией рекомендуется проверить доступность сервера Redis на сервере Salt.Box.

Из командной оболочки сервера Salt.Box выполните проверку подключения к серверу Redis (на порт TCP/6379):

nc -vz <IP_или_HOSTNAME_Salt_Box> 6379

Убедитесь, что в выводе команды нет сообщений об ошибках, например, "Connection refused", "No route to host" и т. п.

1. Клонирование репозитория Salt.Box Bridge

На сервере Salt Master выполните:

git clone https://dev.saltbox.pro/salt.box/salt-box-bridge.git

2. Получение сертификата Redis

На сервере Salt.Box выполните:

sudo docker compose cp redis-salt:/etc/redis/certs/ca.crt ./redis-ca.crt

Скопируйте файл redis-ca.crt на сервер Salt Master в каталог /etc/salt/ssl/.

3. Создание необходимых каталогов

На сервере Salt Master последовательно выполните команды:

sudo mkdir -p /srv/salt_extmod/engines
sudo mkdir -p /srv/salt_extmod/runners
sudo mkdir -p /etc/salt/salt_box.d
sudo mkdir -p /etc/salt/ssl

4. Копирование файлов модуля Bridge

Скопируйте все файлы с расширением .py из каталогов engines/ и runners/ из репозитория salt-box-bridge в соответствующие каталоги на сервере Salt Master:

  • engines//srv/salt_extmod/engines/
  • runners//srv/salt_extmod/runners/

Убедитесь, что файлы принадлежат пользователю root.

5. Установка сервисного модуля Bridge

Установите модуль salt_box_bridge_service с использованием утилиты pip, соответствующей версии Python вашего сервера Salt Master:

sudo /opt/saltstack/salt/bin/pip3.10 install /путь/до/salt-box-bridge/salt_box_bridge_service

6. Настройка конфигурации Salt Master

Создайте файл /etc/salt/master.d/master.conf со следующим содержимым:

salt_master_id: UNIQUE_NAME       # Уникальный идентификатор мастера в системе Salt.Box

module_dirs:
- /srv/salt_extmod/ # Путь к каталогам с кастомными модулями (engines и runners)

auto_accept: true # Автоматически принимать ключи миньонов

presence_events: True # Отправка событий присутствия миньонов

engines:
- salt_box_redis_bridge: # Модуль для взаимодействия через Redis
salt_box_env_file: '/etc/salt/salt_box.d/.env'
- salt_box_service: # Модуль для регистрации мастера в Salt.Box
salt_box_env_file: '/etc/salt/salt_box.d/.env'

schedule:
salt_box_redis_bridge_cleanup: # Периодическая очистка устаревших команд в Redis
hours: 3
function: salt_box_redis_bridge.cleanup_expired_jobs
kwargs:
expire: 604800 # Время жизни команд в секундах
redis_host: redis-salt # Хост Redis (можно оставить как есть, если настроен в файле .env)

7. Создание файла .env

Создайте файл /etc/salt/salt_box.d/.env со следующим содержимым:

REDIS_HOST="Salt_Box_IP_or_hostname" # IP или имя хоста, на котором установлены Salt.Box и Redis
REDIS_USERNAME="Redis_user" # Имя пользователя Redis (переменная REDIS_SALT_USERNAME на Salt.Box)
REDIS_PASSWORD="Redis_password" # Пароль пользователя Redis (из secrets/redis_salt_password)

REDIS_SSL_USE=True # Использовать ли TLS для подключения к Redis
REDIS_SSL_CA_CERTS="/etc/salt/ssl/redis-ca.crt" # Путь к CA-сертификату Redis, полученному с Salt.Box

EXPIRE=604800 # Время жизни команд в Redis (в секундах)
MASTER_SECRET="Unique_secret" # Уникальный секретный ключ мастера (можно сгенерировать pwgen)
примечание

Убедитесь, что значения переменных соответствуют настройкам вашего сервера Salt.Box.

8. Генерация уникального идентификатора Master-сервера

к сведению

Данный пункт выполняется опционально.

Выполните скрипт для генерации уникального идентификатора:

./make_master_id.sh > /etc/salt/salt_box.d/master_id.txt

Затем в файле master.conf укажите:

salt_master_id: /etc/salt/salt_box.d/master_id.txt

9. Перезапуск сервера Salt Master

Примените изменения, перезапустив службу salt-master:

sudo systemctl restart salt-master.service

После выполнения всех шагов ваш серввер Salt Master будет интегрирован с Salt.Box и сможет взаимодействовать с его компонентами через сервер Redis.