Подключение Master-сервера
Данная инструкция предназначена для пользователей, которые хотят подключить существующий сервер 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" и т. п.
Установка модуля Salt.Box Bridge
-
Получите корневой сертификат Redis, выполнив в каталоге проекта
saltbox-composeна сервере Salt.Box команду:sudo docker compose cp redis-salt:/etc/redis/certs/ca.crt ./redis-ca.crt -
Клонируйте репозиторий
saltbox-bridgeили скопируйте иным способом файлы проектаsaltbox-bridgeна подключаемый сервер Salt Master.git clone https://dev.saltbox.pro/salt.box/saltbox-bridge.git -
Скопируйте все файлы с расширением
.pyиз каталоговengines/иrunners/из репозиторияsaltbox-bridgeв соответствующие каталоги на сервере Salt Master:engines/→/srv/salt_extmod/engines/runners/→/srv/salt_extmod/runners/
-
Установите модуль saltbox_bridge с использованием Python-утилиты pip3, соответствующей версии Python вашего сервера Salt Master:
sudo pip3 install `./saltbox_bridge/` -
Скопируйте файл
redis-ca.crtна подключаемый сервер Salt Master в каталог/etc/salt/ssl/.примечаниеВладелец копируемых файлов (шаги 1-5) должен совпадать с пользователем-владельцем процесса
salt-master(обычно этоroot). -
Настройте файл конфигурации сервиса
salt-master:/etc/salt/master# /etc/salt/master
## Уникальный идентификатор мастера в системе Salt.Box
## Может содержать латинские буквы, цифры, подчёркивание, знак "минус" и точку
salt_master_id: UNIQUE_NAME
## Где находятся подкаталоги с модулями Salt.Box Bridge:
module_dirs:
- /srv/salt_extmod/
## Автоматически принимать открытые ключи от миньонов. `false` для ручного приёма ключей
auto_accept: true
## Периодическая отправка событий "Присутствие миньона" (миньон находится в сети)
presence_events: True
## Установите действительные значения
engines:
- saltbox_delator:
- saltbox_agent:
ext_pillar:
- redis_pillar:
## Периодическая очистка устаревших команд в Redis
schedule:
saltbox_delator_cleanup:
hours: 3
function: saltbox_delator.cleanup_expired_jobs -
Поместите содержимое каталога
master/states/в каталогfile_rootsминьона.
По умолчанию корневым каталогом миньона является/srv/salt/, но предпочтительнее изменить его, чтобы он не конфликтовал с корневым каталогом мастера:/etc/salt/minion# /etc/salt/minion on master host
file_roots:
base:
- '/srv/salt_master_local/' -
Создайте YAML-файл конфигурации
saltbox:/etc/salt/saltbox# /etc/salt/saltbox
## Конфигурация Salt.Box
## Файл в формате YAML
## Конфигурация Redis
## REDIS_HOST - хост с развернутым saltbox-compose
redis_host: 'REDIS_HOST'
## REDIS_USERNAME - имя пользователя REDIS_SALT_USERNAME из файла `.env` saltbox-compose
redis_username: 'REDIS_USERNAME'
## REDIS_PASSWORD - пароль из `secrets/redis_salt_password`
redis_password: 'REDIS_PASSWORD'
redis_ssl_use: true
## Каталог с сертификатом
redis_ssl_ca_certs: '/etc/salt/ssl/redis-ca.crt'
## Время жизни для ответов команд (job returns) и grains (сек)
## `null` (без кавычек) - TTL не ограничен
## ВНИМАНИЕ! Значение `null` может привести к ухудшению производительности и интенсивному использованию памяти.
expire: 604800
## Опции для получения SLS-файлов и модулей Salt.Box
## Адрес сервера Salt.Box
salt_conf_server: 'saltbox.local' # УКАЖИТЕ РЕАЛЬНОЕ ЗНАЧЕНИЕ
## Порт основного сервера Salt.Box, на котором работает служба sshfs
salt_conf_port: 1022
## Имя пользователя SSH для доступа к файлам
salt_conf_user: 'master'
## Путь на УДАЛЕННОМ сервере, где хранятся файлы
salt_conf_source: '/srv/master/salt/'
## Путь на ЛОКАЛЬНОМ сервере, который находится в каталоге `file_root` Salt Master
salt_conf_destination: '/srv/saltbox_salt/'
## Настройки репликации файлов из службы sshfs Salt.Box
## Репликация должна быть включена для удаленного Master-сервера
sshfs_sync_on: true
## Адрес сервера-источника Salt.Box для синхронизации
sshfs_server: 'saltbox.local' # УКАЖИТЕ РЕАЛЬНОЕ ЗНАЧЕНИЕ
## Порт сервера Salt.Box, на котором работает служба sshfs
sshfs_port: 1022
## Имя пользователя SSH для доступа к файлам
sshfs_user: 'saltbox'
## Путь на УДАЛЕННОМ сервере, где хранятся файлы
sshfs_source: '/srv/sshfs/'
## Путь на ЛОКАЛЬНОМ сервере, куда будут помещены файлы
sshfs_destination: '/srv/sshfs/' # УКАЖИТЕ РЕАЛЬНОЕ ЗНАЧЕНИЕ -
Используйте вспомогательный скрипт
./make_master_id.shдля создания идентификатора с именем хоста и меткой времени и сохранения его в отдельный файл вместо ручного указанияsalt_master_idв основном файле конфигурации:./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 -
Примените изменения, перезапустив службу
salt-master:sudo systemctl restart salt-master.service
Демон SSH должен быть настроен для обслуживания каталога SSHFS_DESTINATION, должны быть установлены соответствующие параметры Pillars, чтобы миньоны могли получать файлы от своего Master-сервера.
После выполнения всех шагов ваш сервер Salt Master будет интегрирован с Salt.Box и сможет взаимодействовать с его компонентами через сервер Redis.