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

Развёртывание сервера SALT.BOX

В данном разделе описаны процессы подготовки, установки и запуска SALT.BOX на сервере с доступом к интернету.

Рассмотрены варианты развёртывания:

Дополнительные действия, необходимые для развёртывания SALT.BOX на сервере без доступа к интернету, описаны в разделе Развёртывание сервера SALT.BOX (без доступа к интернету).

предупреждение

Если Вы выполняете развёртывание сервера SALT.BOX на виртуальной машине, убедитесь, что процессор виртуальной машины поддерживает расширения набора команд avx и avx2. Данные расширения требуются для работы MongoDB версии 5.0 и выше.

Проверить наличие поддержки можно следующей командой:

cat /proc/cpuinfo

В выводе команды в блоке flags должны быть указаны флаги avx и avx2.


предупреждение

Для развёртывания рабочей версии продукта рекомендуется установить режим обработки перерасхода памяти с помощью команд:

sudo sh -c "echo 'vm.overcommit_memory=1' > /etc/sysctl.d/saltbox.conf"
sudo sysctl -p /etc/sysctl.d/saltbox.conf

Значение vm.overcommit_memory=1 является требованием Redis.

Особенности развёртывания сервера SALT.BOX в Astra Linux SE

Для установки сервера SALT.BOX в ОС Astra Linux SE 1.7, 1.8 необходимо выполнить дополнительные настройки службы docker .

При работе с Docker в Astra Linux SE 1.7.10 и 1.8.6 Вы можете столкнуться с проблемой при импорте контейнеров или загрузке образов.
Команды могут прерваться из-за обнаруженной уязвимости.

Причина возникновения проблемы

Проблема возникает, когда Astra Linux обнаруживает уязвимости в содержимом контейнера.
В Astra SE 1.7 Update 4 был добавлен сканер уязвимостей Openscap, проверяющий уязвимости по базе oval-db.
Сканер включен по умолчанию и запрещает дальнейшее использование контейнера при обнаружении уязвимости.

Пропуск проверки уязвимостей

Вы можете обойти проверку уязвимостей, добавив соответствующую настройку в конфигурационный файл Docker.

  1. Откройте или создайте файл /etc/docker/daemon.json.

  2. Добавьте в файл следующую строку:

    { "astra-sec-level": 6 }

    Можно быстро добавить строку командой:

    sudo cat << EOF > /etc/docker/daemon.json
    { "astra-sec-level" : 6 }
    EOF
  3. Перезапустите Docker:

    sudo systemctl restart docker

Быстрый старт SALT.BOX

Утилита установки install_saltbox.py

Утилита установки install_saltbox.py позволяет загрузить необходимые файлы, установить и запустить систему SALT.BOX.

Получите файл install_saltbox.py.
Запустите файл в каталоге, где вы предпочитаете хранить файлы, связанные с Docker-проектом SALT.BOX Compose.
Используйте флаг -h или --help для просмотра опций утилиты установки.

Синтаксис утилиты install_saltbox.py

install_saltbox.py [-h] [--list-addons] [--addons ADDONS] [--admin ADMIN] [--compose-ref {RELEASE,PRERELEASE,dev}] [--cleanup] [--explicit-secret EXPLICIT_SECRET] [--git] [--host HOST] [--host-is-name] [--port PORT] [-n] [--no-cache] [--no-progress] [-s] [-u] [-v] [OVERRIDE ...]

АргументыОписание
Позиционные аргументы
OVERRIDEДополнительные значения для включения в dotenv в формате NAME='VAL'.
Опции
-h--helpПоказать это справочное сообщение и выйти.
--list-addonsВывести список доступных модулей дополнения в формате JSON и выйти.
--addons ADDONSУстановить официальные модули дополнения SALT.BOX:
FileBrowser, Inventory, Metric, Scheduler, Migrations,
FREE (значение по умолчанию), ALL, NONE.
ВНИМАНИЕ! НЕКОТОРЫЕ ДОПОЛНЕНИЯ ЯВЛЯЮТСЯ ПРОПРИЕТАРНЫМИ, ДЛЯ ЗАГРУЗКИ ТРЕБУЕТСЯ АВТОРИЗАЦИЯ ПО ТОКЕНУ.
Может быть указано несколько значений.
--admin ADMINЛогин администратора SALT.BOX.
--compose-ref {RELEASE,PRERELEASE,dev}Ссылка на Git для получения SALT.BOX Compose:
RELEASE (значение по умолчанию) — для поиска последнего тега релиза,
PRERELEASE — для поиска тега последнего релиза или предварительного релиза (более поздний из них по дате публикации),
dev — для ветки разработки.
--cleanupУдаление возможно существующих экземпляров SALT.BOX с тем же COMPOSE_PROJECT_NAME.
ВНИМАНИЕ! ВОЗМОЖНА ПОТЕРЯ ДАННЫХ!
--explicit-secret EXPLICIT_SECRETУстановить значение секрета явно в формате NAME=VALUE,
используйте saltbox_admin_password=VALUE, чтобы установить пароль администратора SALT.BOX.
Может быть указано несколько значений.
--gitКлонировать git-репозитории вместо загрузки архивов
--host HOSTИмя хоста или реальный адрес для привязки сервера, по умолчанию saltbox.local.
--host-is-nameПринудительное использование SSL-сертификата для DNS-имени, даже если host выглядит как IP-адрес.
--port PORTПорт для обслуживания HTTPS-соединений, по умолчанию 443.
-n--non-interactiveНе запрашивать ввод параметров, использовать значения по умолчанию.
--no-cacheУдалить ранее загруженные архивы репозиториев.
--no-progressНе отображать ход загрузки.
-s--skip-checkНе проверять установку Docker перед запуском.
-u--skip-runВыполнить только подготовку (без установки SALT.BOX).
-v--verboseВывод дополнительной информации.
ВНИМАНИЕ

Если в опции --addons ADDONS указаны проприетарные модули или значение ALL (установить все доступные модули), необходимо записать в переменную среды SALTBOX_INSTALL_TOKEN токен авторизации для загрузки проприетарных модулей.

Токен авторизации Вы можете получить при приобретении соответствующей лицензии.

Подробные условия доступны на сайте продукта.

После завершения загрузки и настройки утилита install_saltbox.py запустит скрипт автоматической установки update_and_run.sh.

Алгоритм работы утилиты install_saltbox.py

На Рис. 1 показан алгоритм работы утилиты установки install_saltbox.py.

Рисунок 1. Алгоритм работы утилиты установки install_saltbox.py

Пример использования утилиты install_saltbox.py

Строка запуска утилиты, рассматриваемая в данном примере:

./install_saltbox.py --addons ALL --compose-ref=v0.3.0 --cleanup --explicit-secret=saltbox_admin_password=k2BzQ2sMCi3g --host=176.109.74.142 --no-progress --non-interactive --port=443 --admin master

Пояснение заданных опций:

  • --compose-ref=v0.3.0
    будет установлена версия SALT.BOX с тегом v0.3.0

  • --addons ALL
    будут установлены все дополнительные модули, поставляемые в дистрибутиве SALT.BOX

  • --cleanup
    будут удалены существующие экземпляры системы с тем же COMPOSE_PROJECT_NAME, если они существуют (имя проекта по умолчанию — saltbox — задано в файле base.env)

  • --explicit-secret=saltbox_admin_password=k2BzQ2sMCi3g
    пароль администратора системы

  • --host=176.109.74.142
    IP-адрес хоста, на котором будет доступен веб-интерфейс системы

  • --no-progress
    загрузка будет проходить в «тихом» режиме, без отображения статуса

  • --non-interactive
    при установке системы будет использоваться явно заданные аргументы утилиты и значения по умолчанию, опущенные при вызове параметры запрашиваться не будут

  • --port=443
    веб-интерфейс системы будет доступен на порту 443/TCP по протоколу HTTPS

  • --admin master
    учётная запись администратора системы будет иметь имя master

В загруженном утилитой install_saltbox.py файле base.env будет определён набор Docker-образов с тегом последнего релиза:

./base.env
CORE_AUTOTESTS_TAG='v0.3.0'
CORE_IMAGE_TAG='v0.3.0'
FRONTEND_IMAGE_TAG='v0.3.0'
GATEWAY_IMAGE_TAG='v0.3.0'
SALT_MASTER_IMAGE_TAG='v0.3.0'
KEYCLOAK_IMAGE_TAG='v0.3.0'
KEYCLOAK_INIT_IMAGE_TAG='v0.3.0'
MAKE_CERTS_IMAGE_TAG='v0.3.0'
MONGODB_IMAGE_TAG='v0.3.0'
NGINX_IMAGE_TAG='v0.3.0'
OPA_IMAGE_TAG='v0.3.0'
POSTGRES_IMAGE_TAG='v0.3.0'
PROXY_IMAGE_TAG='v0.3.0'
RABBITMQ_IMAGE_TAG='v0.3.0'
REDIS_IMAGE_TAG='v0.3.0'
SSHFS_IMAGE_TAG='v0.3.0'
AUDIT_IMAGE_TAG='v0.3.0'

Кроме того, утилита install_saltbox.py сформирует файл override.env следующего вида:

./override.env
SALTBOX_ADMIN_USERNAME='master'
WEB_SERVER_OUTER_SOCKET='176.109.74.142:443'
WEB_SERVER_SSL_ALT_NAMES_IP='127.0.0.1,176.109.74.142'
_UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-inventory-compose/.env,../saltbox-filebrowser-compose/.env,../saltbox-metric-compose/.env,../saltbox-scheduler-compose/.env'

После этого будет запущен скрипт автоматической установки update_and_run.sh, который в случае успешной установки и запуска проекта выдаст сообщение:

   ####################################################
########################################################
## ##
## Salt.Box Compose will start soon ##
## ##
## URL: https://176.109.74.142 ##
## Basic administrator: master ##
## Password: k2BzQ2sMCi3g ##
## ##
########################################################
####################################################

Скрипт автоматической установки update_and_run.sh

к сведению

Скрипт автоматической установки update_and_run.sh может быть запущен одним из двух способов:

  1. Автоматически — утилитой install_saltbox.py по завершении загрузки файлов требуемых проектов и настройки конфигурационных файлов.
  2. Вручную — если Вы самостоятельно клонировали репозитории с компонентами системы и сформировали файл override.env либо запустили утилиту install_saltbox.py с опцией --skip-run (только подготовка, без установки SALT.BOX).

Находясь в каталоге проекта, запустите скрипт автоматической установки:

sudo ./bin/update_and_run.sh

Скрипт автоматической установки:

  • с помощью утилиты ./bin/make_secrets.py создаёт набор файлов с секретами в подкаталоге проекта ./secrets/;
  • выполняет обновление образов;
  • выводит учетные данные администратора по умолчанию;
  • с помощью скрипта ./bin/sb-compose.sh создаёт и запускает Docker compose-проект SALT.BOX.

Используйте файл override.env для переопределения значений по умолчанию из файла base.env.
Для просмотра опций скрипта автоматической установки используйте флаг -h или --help.

Синтаксис скрипта update_and_run.sh

./bin/update_and_run.sh [-h|--help] [-d|--detach] [--drop-data] [-f|--force] [-l|--login] [-n|--no-pull] [--no-git-pull] [--no-image-pull] [--no-progress] [--no-root] [--only-update] [-w|--watch] [SERVICE]...

АргументыОписание
Позиционные аргументы
SERVICE
...
Опции
-h--helpПоказать это справочное сообщение и выйти.
-d--detachОтключить Docker Compose после запуска.
--drop-dataУдалить все тома перед запуском.
-f--forceПерезаписывать без подтверждения.
-l--loginПопытаться войти в реестр Docker.
-n--no-pullИзбегать обновления текущего репозитория и образов из Интернета.
--no-git-pullНе загружать текущий репозиторий, даже если это возможно.
--no-image-pullНе загружать более новые образы из реестра Docker.
--no-progressСкрыть индикаторы выполнения.
--no-rootНе использовать sudo, запускать от имени текущего пользователя.
--only-updateОбновить образы Docker и выйти.
-w--watchВключить отслеживание Docker Compose для разработки.

Последний флаг --only-* переопределяет предыдущий.

Пошаговая установка SALT.BOX

к сведению

Пошаговая установка SALT.BOX предназначена для специалистов, занимающихся разработкой и администрированием системы. Данный способ установки рекомендуется использовать только в случае возникновения трудностей при автоматической установке.

Загрузка проекта

Загрузите проект saltbox-compose актуального релиза SALT.BOX по ссылке: https://dev.saltbox.pro/saltbox/saltbox-compose/-/releases/v0.3.0 и разархивируйте его в каталог Вашей рабочей директории.

Подготовка к установке

  1. Войдите в каталог проекта.

  2. В корневом каталоге проекта создайте файл override.env.
    По необходимости в файле override.env переопределите переменные файла base.env, если это требуется пользователю для корректной работы SALT.BOX в его сетевой среде

    к сведению

    Далее приведены описания некоторых переменных файла base.env, переопределение которых может потребоваться пользователю для корректной работы SALT.BOX в его сетевой среде.

    В большинстве случаев все переменные в файле base.env, поставляемом в составе релиза, корректно настроены для случая, когда SALT.BOX устанавливается на localhost.

    Переопределение переменных необходимо также для установки дополнительных модулей одновременно с развёртыванием базовой части системы — Salt.Config.Box.
    Инструкцию по установке дополнительных модулей смотрите в разделе Подключение дополнительных модулей.

    1. Если Вы планируете развёртывание SALT.BOX на виртуальной машине или на хосте, отличном от localhost, то в файле override.env должны быть переопределены переменные, значением которых по умолчанию является 'localhost':

      Порт хост-системы, которому будет сопоставлен порт контейнера Docker, обслуживающего веб-интерфейс SALT.BOX, например:

      WEB_SERVER_PORT=4443

      Переменной WEB_SERVER_OUTER_SOCKET должен быть присвоен сетевой адрес или сетевое имя хоста, на котором веб-интерфейс SALT.BOX будет доступен пользователю. Опционально может быть указано также номер порта:

      WEB_SERVER_OUTER_SOCKET=<HOST> | <HOST>:<PORT>
      примечание

      Если развёртывание SALT.BOX производится на виртуальной машине, переменной WEB_SERVER_OUTER_SOCKET должен быть присвоен сетевой адрес её интерфейса в хостовой системе.

      Если доступ к SALT.BOX будет осуществляться без использования обратного прокси-сервера, то в WEB_SERVER_OUTER_SOCKET должен быть указан тот же порт, что и в WEB_SERVER_PORT. Если порт не указан явно, будет использовано значение по умолчанию для протокола (80/TCP для HTTP, 443/TCP для HTTPS).

    2. Сокет сервера Redis (для подключения к нему контроллера SALT.BOX).
      Для подключения внешних контроллеров следует указать 0.0.0.0:6379 (все сетевые интерфейсы) либо указать адрес одного из сетевых интерфейсов:

      REDIS_SALT_EXPOSE_SOCKET=<IP_ADDRESS>:6379
    3. Теги образов, с которых осуществляется развёртывание SALT.BOX:

      CORE_AUTOTESTS_TAG='v0.3.0'
      CORE_IMAGE_TAG='v0.3.0'
      FRONTEND_IMAGE_TAG='v0.3.0'
      GATEWAY_IMAGE_TAG='v0.3.0'
      SALT_MASTER_IMAGE_TAG='v0.3.0'
      KEYCLOAK_IMAGE_TAG='v0.3.0'
      KEYCLOAK_INIT_IMAGE_TAG='v0.3.0'
      MAKE_CERTS_IMAGE_TAG='v0.3.0'
      MONGODB_IMAGE_TAG='v0.3.0'
      NGINX_IMAGE_TAG='v0.3.0'
      OPA_IMAGE_TAG='v0.3.0'
      POSTGRES_IMAGE_TAG='v0.3.0'
      PROXY_IMAGE_TAG='v0.3.0'
      RABBITMQ_IMAGE_TAG='v0.3.0'
      REDIS_IMAGE_TAG='v0.3.0'
      SSHFS_IMAGE_TAG='v0.3.0'
      AUDIT_IMAGE_TAG='v0.3.0'
    4. Время ожидания остановки контейнера до принудительной остановки:

      STOP_GRACE_PERIOD=5s

      Уменьшение данного значения может ускорить остановку, но повышает риски потери вре́менных данных.

    5. Уровень журналирования контейнера главного контроллера SALT.BOX:

      SALT_MASTER_LOG_LEVEL='warning'
      SALT_MINION_LOG_LEVEL='warning'

      Обозначения уровней журналирования:

      УровеньЧисловое значениеОписание
      critical50Критические ошибки
      error40Ошибки
      warning30Предупреждения
      info20Важная информация, предоставляемая приложением при нормальном выполнении
      debug10Информация для диагностики проблем и устранения неполадок
      all0Все события
      осторожно

      Любой уровень журнала ниже уровня "info" НЕБЕЗОПАСЕН и может регистрировать конфиденциальные данные.
      Подробную информацию об уровнях журналирования смотрите в документации проекта SaltStack.

    6. Пути к каталогам в файловой системе хоста Docker, в которых будут храниться конфигурации для агентов.
      Каталоги могут быть перенесены, например, на примонтированное хранилище:

      SSHFS_STORAGE_PATH='./_sshfs-storage/'

      SSHFS-хранилище предназначено для хранения шаблонов и некоторых других типов файлов, используемых при работе SALT.BOX.

Подключение дополнительных модулей

ВНИМАНИЕ

Дополнительные модули, расширяющие функциональные возможности программного комплекса SALT.BOX, могут распространяться по проприетарной лицензии.
Для их загрузки необходимо получить токен авторизации и выполнить вход в реестр Docker:

docker login registry.saltbox.pro

Подробные условия доступны на сайте продукта.

Модуль мониторинга

  1. Находясь в каталоге проекта saltbox-compose, в его родительский каталог клонируйте репозиторий saltbox-metric-compose:

    git clone git@dev.saltbox.pro:saltbox/saltbox-metric-compose.git ../saltbox-metric-compose

    Перейдите в ветку с тегом, совпадающим с версией проекта saltbox-compose:

    cd ../saltbox-metric-compose && git checkout v0.3.0
  2. Если необходимо, переопределите переменные, установленные в файле .env модуля мониторинга, в файле override.env проекта saltbox-compose.

    ВНИМАНИЕ

    Если Вы клонировали репозиторий saltbox-metric-compose в каталог, отличный от ../saltbox-metric-compose, в файле .env модуля переопределите переменную пути:

    METRIC_OUTER_PATH='<фактический относительный путь к каталогу>'
  3. В файл override.env проекта saltbox-compose добавьте переменную:

    _UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-metric-compose/.env'
  4. Проверьте, установлена ли переменная, разрешающая использование модуля мониторинга:

    SALTBOX_MODULE_METRIC_ON=true

Модуль «Инвентаризация»

  1. Находясь в каталоге проекта saltbox-compose, в его родительский каталог клонируйте репозиторий saltbox-inventory-compose

    git clone git@dev.saltbox.pro:saltbox/saltbox-inventory-compose.git ../saltbox-inventory-compose

    Перейдите в ветку с тегом, совпадающим с версией проекта saltbox-compose:

    cd ../saltbox-inventory-compose && git checkout v0.3.0
  2. Если необходимо, переопределите переменные, установленные в файле .env модуля «Инвентаризация», в файле override.env проекта saltbox-compose.

    ВНИМАНИЕ

    Если Вы клонировали репозиторий saltbox-inventory-compose в каталог, отличный от ../saltbox-inventory-compose, в файле .env модуля переопределите переменную пути:

    INVENTORY_COMPOSE_DIR='<фактический относительный путь к каталогу>'
  3. В файл override.env проекта saltbox-compose добавьте переменную:

    _UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-inventory-compose/.env'
  4. Проверьте, установлена ли переменная, разрешающая использование модуля «Инвентаризация»:

    SALTBOX_MODULE_INVENTORY_ON=false

Модуль «Планировщик»

  1. Находясь в каталоге проекта saltbox-compose, в его родительский каталог клонируйте репозиторий saltbox-scheduler-compose

    git clone git@dev.saltbox.pro:saltbox/saltbox-scheduler-compose.git ../saltbox-scheduler-compose

    Перейдите в ветку с тегом, совпадающим с версией проекта saltbox-compose:

    cd ../saltbox-scheduler-compose && git checkout v0.3.0
  2. Если необходимо, переопределите переменные, установленные в файле .env модуля «Планировщик», в файле override.env проекта saltbox-compose.

    ВНИМАНИЕ

    Если Вы клонировали репозиторий saltbox-scheduler-compose в каталог, отличный от ../saltbox-scheduler-compose, в файле .env модуля переопределите переменную пути:

    SCHEDULER_COMPOSE_OUTER_PATH='<фактический относительный путь к каталогу>'
  3. В файл override.env проекта saltbox-compose добавьте переменную:

    _UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-scheduler-compose/.env'

Подключение нескольких дополнительных модулей

  1. Клонируйте все необходимые репозитории в родительский каталог проекта saltbox-compose, как описано выше для отдельных модулей, и переключите каждый из них на ветку с тегом, совпадающим с версией проекта saltbox-compose.

  2. Если необходимо, переопределите переменные файлов .env дополнительных модулей, как описано выше для отдельных модулей.

  3. В файле override.env проекта saltbox-compose перечислите все добавляемые .env-файлы соответствующих модулей через запятую, например:

    _UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-inventory-compose/.env,../saltbox-metric-compose/.env,../saltbox-scheduler-compose/.env'

Создание файлов с секретами

Создайте файлы с секретами в подкаталоге проекта ./secrets/.
Создать файлы можно с помощью вспомогательного скрипта:

python3 ./bin/make_secrets.py

Установка и запуск SALT.BOX

Перед установкой и запуском проекта saltbox-compose должны быть завершены подготовительные этапы:

Загрузка необходимых Docker-образов и запуск проекта осуществляется с помощью скрипта saltbox-compose/bin/sb-compose.sh.

Данный скрипт представляет собой простую «обертку» над командой docker compose и является рекомендуемым способом управления запущенным экземпляром проекта.
Скрипт передает дополнительные файлы .env в docker compose.

Порядок применения файлов .env следующий:

base.env → файлы .env, указанные в переменной _UPDATE_AND_RUN_EXTRA_ENV_FILESoverride.env.

Каждый следующий файл переопределяет переменные окружения, установленные в предыдущем.

Для запуска проекта:

Находясь в каталоге проекта saltbox-compose, запустите проект с опцией -d (запуск контейнеров в фоновом (detached) режиме):

sudo ./bin/sb-compose.sh up -d

Через некоторое время, необходимое для загрузки и обновления Docker-образов, создания необходимых объектов Docker и старта контейнеров, Вы можете проверить статусы проекта и отдельных контейнеров.
Примеры вывода команд при нормальном старте проекта приведены в разделе Объекты Docker, создаваемые при установке.

Настройка HTTPS

Сертификат веб-сервера

Система создает Частный центр сертификации (Private CA) и выпускает сертификат для веб-сервера при первом запуске.

Сертификат центра сертификации можно получить с помощью команды:

# Система должна быть запущена
sudo ./bin/sb-compose.sh cp redis-salt:/etc/redis/certs/ca.crt ./

Он будет сохранен в файл ca.crt в текущем каталоге и может быть установлен в веб-браузер для подтверждения доверия к веб-интерфейсу.

Сгенерированный сертификат по умолчанию привязан к DNS-именам localhost и saltbox.local.
Вы можете указать другие DNS-имена в переменной WEB_SERVER_SSL_ALT_NAMES_DNS и/или IP-адреса в переменной WEB_SERVER_SSL_ALT_NAMES_IP (чтобы обращаться к системе по IP-адресу, а не по DNS-имени).
Обе переменные могут принимать списки, разделенные запятыми.
DNS-имена могут быть RFC-совместимыми wildcard-шаблонами (*.saltbox.local, но не *saltbox.local). Символы подстановки для IP-адресов не поддерживаются.

Перезагрузите систему, чтобы применить изменения и пересоздать сертификат.

Сертификат по умолчанию можно заменить другим, соответствующим требованиям:

# Система должна быть запущена хотя бы один раз
sudo ./bin/sb-compose.sh cp CUSTOM_CERT proxy:/etc/nginx/ssl/proxy.crt
sudo ./bin/sb-compose.sh cp CUSTOM_CERT_KEY proxy:/etc/nginx/ssl/proxy.key
предупреждение

Изменение переменных WEB_SERVER_SSL_ALT_NAMES_* приведет к перезаписи пользовательского сертификата новым сгенерированным.

Объекты Docker, создаваемые при установке

После успешного завершения процесса сборки создаётся ряд объектов Docker, показанных в таблицах 1, 2, 3.
В примерах показаны примеры для конфигурации SALT.BOX без дополнительных модулей.

Образы

Пример вывода команды docker image ls
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE   EXTRA
registry.saltbox.pro/saltbox/saltbox-audit:v0.3.0 ee98ffdeb0ce 443MB 106MB U
registry.saltbox.pro/saltbox/saltbox-bridge/salt-master:v0.3.0 255892b36a83 558MB 137MB U
registry.saltbox.pro/saltbox/saltbox-compose/keycloak:v0.3.0 c1c177a061b4 867MB 298MB U
registry.saltbox.pro/saltbox/saltbox-compose/make-certs:v0.3.0 63506f276e16 312MB 78.4MB U
registry.saltbox.pro/saltbox/saltbox-compose/mongodb:v0.3.0 6d2bbaab90bf 745MB 183MB U
registry.saltbox.pro/saltbox/saltbox-compose/opa:v0.3.0 5e206fbd0f08 95.5MB 27.8MB U
registry.saltbox.pro/saltbox/saltbox-compose/postgres-16-alpine:v0.3.0 7e710f0627a8 419MB 116MB U
registry.saltbox.pro/saltbox/saltbox-compose/proxy:v0.3.0 9e61410079ff 211MB 53.7MB U
registry.saltbox.pro/saltbox/saltbox-compose/rabbitmq:v0.3.0 a63a4a50db67 391MB 116MB U
registry.saltbox.pro/saltbox/saltbox-compose/redis:v0.3.0 91f1773e4916 57.4MB 16.3MB U
registry.saltbox.pro/saltbox/saltbox-compose/sshfs:v0.3.0 2b08ac240f44 309MB 78.4MB U
registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 2a1d5425a93d 504MB 120MB U
registry.saltbox.pro/saltbox/saltbox-frontend-base:v0.3.0 1b63e5cdb658 227MB 57.2MB U
registry.saltbox.pro/saltbox/saltbox-frontend-core:v0.3.0 a81f2ff515db 367MB 85.9MB U
registry.saltbox.pro/saltbox/saltbox-frontend-gateway:v0.3.0 47b71c81fdcd 243MB 63.4MB U
registry.saltbox.pro/saltbox/saltbox-frontend-root-config:v0.3.0 68ca3911682d 212MB 53.9MB U
registry.saltbox.pro/saltbox/saltbox-gateway:v0.3.0 b86be82ee87c 470MB 112MB U
registry.saltbox.pro/saltbox/saltbox-keycloak-init:v0.3.0 44c92559736d 649MB 159MB U

Таблица 1. Загружаемые образы Docker
Образ DockerРазмерОписание
registry.saltbox.pro/saltbox/saltbox-audit:v0.3.0106.0 MBМодуль аудита
registry.saltbox.pro/saltbox/saltbox-bridge/salt-master:v0.3.0137.0 MBКонтроллер SALT.BOX
registry.saltbox.pro/saltbox/saltbox-compose/keycloak:v0.3.0298.0 MBIdAM сервер KeyCloak
registry.saltbox.pro/saltbox/saltbox-compose/make-certs:v0.3.078.4 MBГенерация и управление TLS/SSL сертификатами
registry.saltbox.pro/saltbox/saltbox-compose/mongodb:v0.3.0183.0 MBСУБД MongoDB
registry.saltbox.pro/saltbox/saltbox-compose/opa:v0.3.027.8 MBOpen Policy Agent
registry.saltbox.pro/saltbox/saltbox-compose/postgres-16-alpine:v0.3.0116.0 MBСУБД
registry.saltbox.pro/saltbox/saltbox-compose/proxy:v0.3.053.7 MB
Обратный прокси / маршрутизация HTTP(S)-запросов
registry.saltbox.pro/saltbox/saltbox-compose/rabbitmq:v0.3.0116.0 MBБрокер сообщений RabbitMQ
registry.saltbox.pro/saltbox/saltbox-compose/redis:v0.3.016.3 MBRedis server
registry.saltbox.pro/saltbox/saltbox-compose/sshfs:v0.3.078.4 MBПодключаемая файловая система SSHFS
registry.saltbox.pro/saltbox/saltbox-core:v0.3.0120.0 MBСерверные компоненты (ядро) SALT.BOX
registry.saltbox.pro/saltbox/saltbox-frontend-base:v0.3.057.2 MBБазовый образ для компонентов пользовательского интерфейса
registry.saltbox.pro/saltbox/saltbox-frontend-core:v0.3.085.9 MBКомпоненты пользовательского интерфейса ядра SALT.BOX
registry.saltbox.pro/saltbox/saltbox-frontend-gateway:v0.3.063.4 MBКомпоненты пользовательского интерфейса шлюза SALT.BOX
registry.saltbox.pro/saltbox/saltbox-frontend-root-config:v0.3.053.9 MB
Конфигурация корневого frontend-приложения
registry.saltbox.pro/saltbox/saltbox-gateway:v0.3.0112.0 MBAPI-шлюз (единая точка входа к backend-сервисам)
registry.saltbox.pro/saltbox/saltbox-keycloak-init:v0.3.0159.0 MB
Инициализация (bootstrap) сервера Keycloak (создание realm, пользователей, ролей)

Контейнеры

Пример вывода команды docker compose ls -a:

NAME                STATUS                   CONFIG FILES
saltbox exited(3), running(27) root/saltbox-compose/compose.yaml
Пример вывода команды docker container ls -a
CONTAINER ID   IMAGE                                                                    COMMAND                  CREATED       STATUS                   PORTS                                                             NAMES
65be2951ca9d registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-taskiq-worker-1
542b6b927e25 registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-taskiq-salt-worker-1
bf834e7a9cf4 registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-jobs-watcher-1
4be928161261 registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-faststream-redis-1
4dfca5774eea registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-salt-buffer-manager-1
dbadc0ed0a7c registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-taskiq-notify-worker-1
a4b370484996 registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-faststream-rabbit-1
65b384262d45 registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-taskiq-scheduler-1
6815c56d9b9c registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-tasks-watcher-1
4c515d065761 registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-core-1
d01a8ede067b registry.saltbox.pro/saltbox/saltbox-keycloak-init:v0.3.0 "saltbox-keycloak-in…" 13 days ago Exited (0) 11 days ago saltbox-keycloak-init-1
a50b272ec854 registry.saltbox.pro/saltbox/saltbox-core:v0.3.0 "/usr/local/bin/entr…" 13 days ago Exited (0) 11 days ago saltbox-saltbox-core-init-1
d0626fafde69 registry.saltbox.pro/saltbox/saltbox-gateway:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000-8001/tcp saltbox-saltbox-gateway-1
89f23c7ddd56 registry.saltbox.pro/saltbox/saltbox-bridge/salt-master:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 0.0.0.0:4505-4506->4505-4506/tcp, [::]:4505-4506->4505-4506/tcp saltbox-salt-master-1
a592c25d3d01 registry.saltbox.pro/saltbox/saltbox-compose/keycloak:v0.3.0 "/usr/local/bin/star…" 13 days ago Up 11 days (healthy) 8080/tcp saltbox-keycloak-1
04f5f064b575 registry.saltbox.pro/saltbox/saltbox-audit:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days 8000/tcp saltbox-saltbox-audit-1
4246b31d9e5f registry.saltbox.pro/saltbox/saltbox-compose/redis:v0.3.0 "entrypoint.sh '--sa…" 13 days ago Up 11 days (healthy) 0.0.0.0:6379->6379/tcp saltbox-redis-salt-1
6d64d2b662f1 registry.saltbox.pro/saltbox/saltbox-frontend-core:v0.3.0 "/docker/entrypoint.…" 13 days ago Up 11 days 0.0.0.0:8003->80/tcp, [::]:8003->80/tcp saltbox-saltbox-frontend-core-1
199f3b8091b9 registry.saltbox.pro/saltbox/saltbox-compose/postgres-16-alpine:v0.3.0 "docker-entrypoint.s…" 13 days ago Up 11 days (healthy) 5432/tcp saltbox-keycloak-db-1
b77449364de4 registry.saltbox.pro/saltbox/saltbox-compose/mongodb:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days (healthy) 0.0.0.0:27017->27017/tcp saltbox-mongo-1
792df90f2a78 registry.saltbox.pro/saltbox/saltbox-frontend-root-config:v0.3.0 "/docker/entrypoint.…" 13 days ago Up 11 days 80/tcp saltbox-saltbox-frontend-root-config-1
0e87a92d3366 registry.saltbox.pro/saltbox/saltbox-compose/sshfs:v0.3.0 "/usr/local/bin/sshd…" 13 days ago Up 11 days 0.0.0.0:1022->1022/tcp, [::]:1022->1022/tcp saltbox-sshfs-1
b1f45e30f53d registry.saltbox.pro/saltbox/saltbox-compose/redis:v0.3.0 "entrypoint.sh '--sa…" 13 days ago Up 11 days 6379/tcp saltbox-redis-taskiq-1
8060245cd253 registry.saltbox.pro/saltbox/saltbox-frontend-base:v0.3.0 "/docker/entrypoint.…" 13 days ago Up 11 days 80/tcp saltbox-saltbox-frontend-base-1
0f46fabdd602 registry.saltbox.pro/saltbox/saltbox-frontend-gateway:v0.3.0 "/docker/entrypoint.…" 13 days ago Up 11 days 80/tcp saltbox-saltbox-frontend-gateway-1
605c7b1a29cc registry.saltbox.pro/saltbox/saltbox-compose/mongodb:v0.3.0 "/usr/local/bin/entr…" 13 days ago Up 11 days (healthy) 0.0.0.0:27037->27017/tcp saltbox-mongodb-audit-1
33b3ed35ca16 registry.saltbox.pro/saltbox/saltbox-compose/make-certs:v0.3.0 "/docker/entrypoint.…" 13 days ago Exited (0) 11 days ago saltbox-make-certs-1
ce0375e53690 registry.saltbox.pro/saltbox/saltbox-compose/rabbitmq:v0.3.0 "entrypoint.sh" 13 days ago Up 11 days (healthy) 0.0.0.0:5672->5672/tcp, [::]:5672->5672/tcp saltbox-rabbitmq-1
ca4faf0f5525 registry.saltbox.pro/saltbox/saltbox-compose/proxy:v0.3.0 "/docker/entrypoint.…" 13 days ago Up 11 days 0.0.0.0:443->443/tcp, [::]:443->443/tcp saltbox-proxy-1
05705f726bd2 registry.saltbox.pro/saltbox/saltbox-compose/opa:v0.3.0 "/opa run --server -…" 13 days ago Up 11 days 0.0.0.0:8181->8181/tcp, [::]:8181->8181/tcp saltbox-opa-1

Статусы контейнеров:

  • Up — контейнер запущен
  • Exited — контейнер запущен, затем нормально остановлен.

Контейнеры
saltbox-keycloak-init-1,
saltbox-saltbox-core-init-1,
saltbox-make-certs-1
запускаются только для инициализации системы.
Их нормальное состояние после запуска проекта saltbox-compose"Exited".

Таблица 2. Контейнеры Docker, создаваемые при установке
Контейнер DockerОписание
saltbox-proxy-1Nginx reverse proxy.
Перенаправляет запросы агента на внутренние сервисы в контейнерах
saltbox-saltbox-core-salt-buffer-manager-1Менеджер буферизации данных Salt.
Отвечает за временное хранение и пакетную обработку данных, поступающих от SaltStack
saltbox-saltbox-core-jobs-watcher-1Модуль, ожидающий результатов выполнения команд SaltStack
saltbox-saltbox-core-taskiq-worker-1Процесс Taskiq worker.
Отвечает за получение, отправку, выполнение задач из очереди
saltbox-saltbox-core-taskiq-salt-worker-1Процесс Taskiq worker.
Отвечает за работу с задачами SaltStack
saltbox-saltbox-core-taskiq-notify-worker-1Процесс Taskiq worker.
Отвечает за работу системы уведомлений
saltbox-saltbox-core-faststream-rabbit-1Потоковый обработчик (consumer) FastStream, подключенный к RabbitMQ.
Обеспечивает асинхронную обработку сообщений из брокера RabbitMQ
saltbox-saltbox-core-taskiq-scheduler-1Модуль, отвечающий за работу с распределённой асинхронной очередью задач
saltbox-saltbox-core-tasks-watcher-1Модуль, ожидающий результатов выполнения задач SaltStack
saltbox-saltbox-core-faststream-redis-1Сервер Redis, используемый как брокер для Faststream
saltbox-saltbox-core-1Главный серверный компонент SALT.BOX (бэкенд)
saltbox-keycloak-init-1Инициализатор Keycloak.
Выполняет первоначальную настройку (создание realm’ов, агентов, пользователей) для Keycloak при первом запуске
saltbox-saltbox-core-init-1Инициализатор ядра SALT.BOX.
Выполняет миграции базы данных, создание начальных настроек и проверку конфигурации ядра SALT.BOX
saltbox-saltbox-gateway-1Шлюз SALT.BOX
saltbox-salt-master-1Контроллер SALT.BOX для управления агентами
saltbox-keycloak-1KeyCloak — подсистема идентификации и управления доступом SALT.BOX
saltbox-redis-salt-1Сервер Redis, используемый для хранения результатов выполнения процессов, связанных с SaltStack
saltbox-keycloak-db-1База данных сервиса KeyCloak
saltbox-redis-taskiq-1Сервер Redis, используемый как брокер и хранилище результатов для Taskiq
saltbox-saltbox-frontend-core-1Компоненты пользовательского интерфейса ядра SALT.BOX
saltbox-make-certs-1Модуль, предоставляющий сервис выпуска сертификатов
saltbox-rabbitmq-1Сервис RabbitMQ.
Брокер сообщений.
Отвечает за сбор данных из нескольких источников и отправляет их в сервисы для дальнейшей обработки
saltbox-mongo-1СУБД MongoDB.
Используется бэкендом SALT.BOX.
В БД хранятся такие сущности, как агенты, коллекции и т. п.
saltbox-sshfs-1Сервер SSH.
Используется для монтирования файловой системы sshfs на агентах
saltbox-opa-1Сервис Open Policy Agent.
OPA используется для создания политик доступа к различным компонентам веб-приложения
saltbox-saltbox-frontend-base-1Базовый модуль фронтенда.
Содержит общие компоненты, стили, утилиты и библиотеки, используемые всеми интерфейсными модулями SALT.BOX
saltbox-saltbox-frontend-root-config-1Контейнер с конфигурацией корневого frontend-приложения.
Отвечает за маршрутизацию (routing), компоновку (layout) и объединение микрофронтендов пользовательского интерфейса SALT.BOX
saltbox-saltbox-frontend-gateway-1Компоненты пользовательского интерфейса шлюза SALT.BOX
saltbox-saltbox-audit-1Модуль аудита
saltbox-mongodb-audit-1СУБД модуля аудита

Тома

Пример вывода команды docker volume ls
DRIVER    VOLUME NAME
local 970c5fa52fc9f1396dfa9b695b28c1f68b083a607a4dacecded3c7c50c22bd7c
local saltbox_keycloak-db_data
local saltbox_mongo_audit_data
local saltbox_mongo_data
local saltbox_proxy_certs
local saltbox_redis_salt_certs
local saltbox_redis_salt_data
local saltbox_redis_taskiq_data
local saltbox_salt_master_pki
local saltbox_salt_master_saltbox_var
local saltbox_salt_repos
local saltbox_saltbox_core_var
local saltbox_sshfs_host_keys

Таблица 3. Тома Docker, создаваемые при установке
Том DockerОписание
<256-битное имя в 16-ричной записи>Данные сервиса RabbitMQ
(используется контейнером saltbox-rabbitmq-1)
saltbox_saltbox_core_varКлючи GPG
(используется контейнерами:
saltbox-saltbox-core-faststream-redis-1,
saltbox-saltbox-core-tasks-watcher-1,
saltbox-saltbox-core-1,
saltbox-saltbox-core-taskiq-scheduler-1,
saltbox-saltbox-core-taskiq-worker-1)
saltbox_keycloak-db_dataДанные сервиса KeyCloak
(используется контейнером saltbox-keycloak-db-1)
saltbox_salt_master_pkiХранилище ключей сервиса salt-master
(используется контейнером saltbox-salt-master-1)
saltbox_redis_taskiq_dataДанные сервиса Taskiq
(используется контейнером saltbox-redis-taskiq-1)
saltbox_mongo_dataДанные СУБД MongoDB
(используется контейнером saltbox-mongo-1)
saltbox_mongo_audit_dataДанные СУБД MongoDB модуля аудита
(используется контейнером saltbox-mongodb-audit-1)
saltbox_redis_salt_dataДанные сервера Redis
(используется контейнером saltbox-redis-salt-1)
saltbox_redis_salt_certsХранилище сертификатов сервера Redis
(используется контейнерами:
saltbox-saltbox-core-faststream-redis-1,
saltbox-saltbox-core-tasks-watcher-1,
saltbox-saltbox-core-1,
saltbox-saltbox-core-taskiq-scheduler-1,
saltbox-saltbox-core-taskiq-worker-1,
saltbox-redis-salt-1,
saltbox-make-redis-salt-certs-1,
saltbox-salt-master-1)
saltbox_salt_master_saltbox_var
(используется контейнером saltbox-salt-master-1)
saltbox_salt_reposСхемы JSON для различных функций SaltStack
(используется контейнерами:
saltbox-saltbox-core-faststream-redis-1,
saltbox-saltbox-core-tasks-watcher-1,
saltbox-saltbox-core-1,
saltbox-saltbox-core-taskiq-scheduler-1,
saltbox-saltbox-core-taskiq-worker-1,
saltbox-sshfs-1)
saltbox_proxy_certsTLS/SSL-сертификаты, которые использует прокси
(используется контейнерами:
saltbox-make-certs-1,
saltbox-proxy-1)
saltbox_sshfs_host_keysКлючи сервиса SSH/SFTP, используемого для SSHFS
(используется контейнером saltbox-sshfs-1)

Вход в веб-интерфейс SALT.BOX

В веб-браузере перейдите по адресу:
https://<Адрес, из переменной WEB_SERVER_OUTER_SOCKET файла .env>,
если сервер SALT.BOX установлен локально, или:
https://<Адрес, из переменной WEB_SERVER_OUTER_SOCKET файла .env>,
если доступ к серверу SALT.BOX осуществляется через обратный прокси-сервер.

к сведению

Во втором случае веб-браузер выдаст предупреждение о самоподписанном сертификате.
Сделайте исключение для данного сайта.