Перейти к основному содержимому
Версия: Новая

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.

Назначение пилларов (pillars) миньонам

к сведению

Пиллары (pillars) в SaltStack — защищённое хранилище данных на стороне мастер-сервера, предназначенное для определения и целевого распространения структурированных данных на конкретные миньоны.

Назначение pillars выполняется на стороне мастера и позволяет:

  • централизованно хранить и управлять конфигурационными данными миньонов;
  • передавать структурированные данные строго определённым миньонам;
  • безопасно хранить чувствительную информацию (пароли, ключи, токены);
  • описывать роли, типы и назначение миньонов (web, db, cache и др.);
  • переопределять параметры конфигурации без изменения состояний (SLS);
  • формировать логические коллекции миньонов на основе данных pillars;
  • обеспечивать гибкость и масштабируемость управления инфраструктурой;
  • использовать данные для условной логики в состояниях и шаблонах Jinja;
  • интегрировать внешние источники данных через ext_pillar.
к сведению

Назначение pillars доступно после этапа допуска мастера к управлению миньонами, см. раздел Допуск мастера к управлению миньонами

Чтобы назначить pillars миньонам, выполните следующие действия:

  1. В главном меню системы выберите пункт Мастера Рис. 1.

    Выбор пункта Мастера в главном меню
    Рисунок 1. Выбор пункта Мастера в главном меню


    Вы перейдёте на страницу управления мастерами Рис. 2.

    Страница управления мастерами
    Рисунок 2. Страница управления мастерами


  2. В таблице на странице управления мастерами в колонке ID мастера нажмите ссылку с идентификатором (ID) Рис. 2.

  3. На открывшейся странице карточки мастера нажмите вкладку Данные Pillars Рис. 3 [1].

    Страница карточки мастера
    Рисунок 3. Страница карточки мастера


  4. Нажмите кнопку + Создать Pillar Рис. 3 [2].

  5. В диалоговом окне создания нового pillar заполните поля Рис. 4:

    • ID клиентанеобязательное.
      Если не указано, данные pillar будут применены ко всем клиентам Рис. 4 [1].

    • Имяобязательное.
      Имя pillar (ключ) — уникальное логическое имя pillar, используемое для обращения к данным в SLS-файлах, шаблонах и при нацеливании Рис. 4 [2].

    • Значениеобязательное.
      Значение pillar — здесь задаётся значение pillar. Рис. 4 [3].

    Диалоговое окно создания нового pillar. Кнопка Подтвердить
    Рисунок 4. Диалоговое окно создания нового pillar. Кнопка Подтвердить


  6. Нажмите кнопку Подтвердить Рис. 4 [4].

В результате созданный pillar отобразится на странице карточки мастера Рис. 5.

Созданный pillar на странице карточки мастера
Рисунок 5. Созданный pillar на странице карточки мастера


к сведению

После создания pillar информация о добавленном pillar появится в карточке миньона.
Более подробную информацию о карточке миньона см. в разделе Информация о миньоне.
На вкладке Pillars появится таблица с данными pillars Рис. 6.


Созданный pillar на вкладке Pillars страницы карточки миньона
Рисунок 6. Созданный pillar на вкладке Pillars страницы карточки миньона