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.