Перейти к основному содержимому
Версия: 0.2.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 по ссылке: https://dev.saltbox.pro/saltbox/saltbox-compose/-/releases и разархивируйте его в каталог Вашей рабочей директории.

Быстрый старт 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] [--addons ADDONS] [--admin ADMIN] [--compose-ref COMPOSE_REF] [--cleanup] [--explicit-secret EXPLICIT_SECRET] [--host HOST] [--host-is-name] [--keep-addon-tags] [--keep-image-tags] [--port PORT] [-n] [--no-progress] [-s] [-u] [-v] [OVERRIDE ...]

АргументыОписание
Позиционные аргументы
OVERRIDEДополнительные значения для включения в dotenv в формате NAME='VAL'.
Опции
-h--helpПоказать это справочное сообщение и выйти.
--addons ADDONSУстановить официальные модули дополнения Salt.Box: Inventory, Metric, Scheduler, FREE (значение по умолчанию), ALL.
ВНИМАНИЕ! НЕКОТОРЫЕ ДОПОЛНЕНИЯ ЯВЛЯЮТСЯ ПРОПРИЕТАРНЫМИ, ДЛЯ ЗАГРУЗКИ ТРЕБУЕТСЯ АВТОРИЗАЦИЯ ПО ТОКЕНУ.
Может быть указано несколько значений.
--admin ADMINЛогин администратора Salt.Box.
--compose-ref COMPOSE_REFСсылка на Git для получения Salt.Box Compose, RELEASE (значение по умолчанию) — для поиска последнего тега релиза, master и dev — для основных веток разработки.
--cleanupУдаление возможно существующих экземпляров Salt.Box с тем же COMPOSE_PROJECT_NAME.
ВНИМАНИЕ! ВОЗМОЖНА ПОТЕРЯ ДАННЫХ!
--explicit-secret EXPLICIT_SECRETУстановить секретное значение явно в формате NAME=VALUE,
используйте saltbox_admin_password=VALUE, чтобы установить пароль администратора Salt.Box.
Может быть указано несколько значений.
--host HOSTИмя хоста или реальный адрес для размещения, по умолчанию saltbox.local.
--host-is-nameПринудительное использование SSL-сертификата для DNS-имени, даже если host выглядит как IP-адрес.
--keep-addon-tagsНе переключать теги модулей расширения.
--keep-image-tagsНе переключать теги образов на dev.
--port PORTПорт для обслуживания HTTPS-соединений, по умолчанию 443.
-n--non-interactiveНе запрашивать ввод параметров, использовать значения по умолчанию.
--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

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

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

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

  • --compose-ref=dev
    будет установлена версия Salt.Box с тегом dev

  • --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 сформирует файл override.env следующего вида:

./override.env
FRONTEND_IMAGE_TAG='dev'
GATEWAY_IMAGE_TAG='dev'
KEYCLOAK_IMAGE_TAG='dev'
MAKE_CERTS_IMAGE_TAG='dev'
MONGODB_IMAGE_TAG='dev'
NGINX_IMAGE_TAG='dev'
OPA_IMAGE_TAG='dev'
PROXY_IMAGE_TAG='dev'
REDIS_IMAGE_TAG='dev'
SALT_MASTER_IMAGE_TAG='dev'
SSHFS_IMAGE_TAG='dev'
SCHEDULER_IMAGE_TAG='dev'
METRIC_IMAGE_TAG='dev'
INVENTORY_IMAGE_TAG='dev'
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'
COMPOSE_FILE="${COMPOSE_FILE}:../saltbox-scheduler-compose/compose.yaml"
COMPOSE_FILE="${COMPOSE_FILE}:../saltbox-metric-compose/compose.yaml"
COMPOSE_FILE="${COMPOSE_FILE}:../saltbox-inventory-compose/compose.yaml"
_UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-scheduler-compose/.env,../saltbox-metric-compose/.env,../saltbox-inventory-compose/.env'
_UPDATE_AND_RUN_EXTRA_SECRETS_CONFS='../saltbox-scheduler-compose/secrets.json,../saltbox-inventory-compose/secrets.json'

Скрипт автоматической установки 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

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

  • выполняет слияние файлов base.env и override.env (если файл существует) в файл конфигурации .env;
  • с помощью утилиты ./bin/make_secrets.py создаёт набор файлов с секретами в подкаталоге проекта ./secrets/;
  • выполняет обновление образов;
  • выводит учетные данные администратора по умолчанию;
  • с помощью скрипта ./bin/sb-compose.sh запускает экземпляр Salt.Box.

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

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

./bin/update_and_run.sh [-d|--detach] [-h|--help] [SERVICE]...

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

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

Пошаговая установка Salt.Box

к сведению

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

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

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

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

    После настройки файла override.env выполните:

    ./bin/update_and_run.sh --only-env

    Файлы base.env и override.env будут объединены в файл .env.

    к сведению

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

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

    Модификация файла base.env необходима также для установки дополнительных модулей одновременно с развёртыванием базовой части системы — 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 (для подключения к нему мастера).
      Для подключения внешних мастеров следует указать 0.0.0.0:6379 (все сетевые интерфейсы) либо указать адрес одного из сетевых интерфейсов:

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

      CORE_IMAGE_TAG=<vX.Y.Z>
      FRONTEND_IMAGE_TAG=<vX.Y.Z>
      GATEWAY_IMAGE_TAG=<vX.Y.Z>
      KEYCLOAK_IMAGE_TAG=<vX.Y.Z>
      MAKE_CERTS_IMAGE_TAG=<vX.Y.Z>
      MONGODB_IMAGE_TAG=<vX.Y.Z>
      NGINX_IMAGE_TAG=<vX.Y.Z>
      OPA_IMAGE_TAG=<vX.Y.Z>
      PROXY_IMAGE_TAG=<vX.Y.Z>
      REDIS_IMAGE_TAG=<vX.Y.Z>
      SALT_MASTER_IMAGE_TAG=<vX.Y.Z>
      SSHFS_IMAGE_TAG=<vX.Y.Z>

      где <vX.Y.Z> — номер версии программного комплекса Salt.Box

    4. Время ожидания остановки контейнера до принудительной остановки:

      STOP_GRACE_PERIOD=5s

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

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

      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 в Astra Linux SE

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

  1. Компонент docker-compose версии 2.20.2, входящий в состав версий Astra Linux SE 1.7.7 и 1.8.2, не поддерживает специфичные для разработки настройки develop. Данные настройки поддерживаются начиная с версии docker-compose 2.22.0.

    Убедитесь, что в конфигурационных файлах
    compose-backend-dev.yaml, compose-frontend-dev.yaml, compose-frontend-dev.yaml, compose-salt-dev.yaml
    отсутствует секция develop.

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

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

     Проблема возникает, когда 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

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

    python3 ./bin/make_secrets.py
  2. Находясь в каталоге проекта, запустите сборку:

    sudo docker compose up --build -d
    предупреждение

    Проверьте, нет ли предупреждений о неустановленных переменных, чтобы избежать ошибок сборки.

  3. Для обновления внешних образов выполните команду:

    sudo docker compose pull

    затем перезапустите сборку командой:

    sudo docker compose down && sudo docker compose up -d

    Если указан флаг --pull=always, перед сборкой будут загружены актуальные образы:

    sudo docker compose up --build --pull=always

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

ВНИМАНИЕ

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

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

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

  1. В родительский каталог для каталога проекта Salt.Box Compose клонируйте репозиторий metric-compose

    git clone git@dev.saltbox.pro:saltbox/saltbox-metric-compose.git ../saltbox-metric-compose
  2. Добавьте в файл переменных окружения override.env следующие строки:

    COMPOSE_FILE="${COMPOSE_FILE}:../saltbox-metric-compose/compose.yaml"

    _UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-metric-compose/.env'
  3. Сохраните изменённый файл и выполните слияние с файлом base.env командой:

    ./bin/update_and_run.sh --only-env

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

  1. В родительский каталог для каталога проекта Salt.Box Compose клонируйте репозиторий inventory-compose

    git clone git@dev.saltbox.pro:saltbox/saltbox-inventory-compose.git ../saltbox-inventory-compose
  2. Добавьте в файл переменных окружения override.env следующие строки:

    COMPOSE_FILE="${COMPOSE_FILE}:../saltbox-inventory-compose/compose.yaml"

    _UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-inventory-compose/.env'
    _UPDATE_AND_RUN_EXTRA_SECRETS_CONFS='../saltbox-inventory-compose/secrets.json'
  3. Сохраните изменённый файл и выполните слияние с файлом base.env командой:

    ./bin/update_and_run.sh --only-env

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

  1. В родительский каталог для каталога проекта Salt.Box Compose клонируйте репозиторий scheduler-compose

    git clone git@dev.saltbox.pro:saltbox/saltbox-scheduler-compose.git ../saltbox-scheduler-compose
  2. Добавьте в файл переменных окружения override.env следующие строки:

    COMPOSE_FILE="${COMPOSE_FILE}:../saltbox-scheduler-compose/compose.yaml"

    _UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-scheduler-compose/.env'
    _UPDATE_AND_RUN_EXTRA_SECRETS_CONFS='../saltbox-scheduler-compose/secrets.json'
  3. Сохраните изменённый файл и выполните слияние с файлом base.env командой:

    ./bin/update_and_run.sh --only-env

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

  1. В файле переменных окружения override.env в строках _UPDATE_AND_RUN_EXTRA_ENV_FILES и
    _UPDATE_AND_RUN_EXTRA_SECRETS_CONFS
    перечислите добавляемые файлы конфигурации соответствующих модулей через запятую, например:

    _UPDATE_AND_RUN_EXTRA_ENV_FILES='../saltbox-inventory-compose/.env,../saltbox-scheduler-compose/.env'
    _UPDATE_AND_RUN_EXTRA_SECRETS_CONFS='../saltbox-inventory-compose/secrets.json,../saltbox-scheduler-compose/secrets.json'
  2. Сохраните изменённый файл и выполните слияние с файлом base.env командой:

    ./bin/update_and_run.sh --only-env

Настройка 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_* приведет к перезаписи пользовательского сертификата новым сгенерированным.

Работа за обратным прокси-сервером с SSL-терминацией

Убедитесь, что WEB_SERVER_OUTER_SOCKET соответствует server_name и порту обратного прокси.

Nginx может быть установлен на том же хосте, что и Salt.Box, либо на отдельном хосте.
В последнем случае убедитесь, что Salt.Box доступен для хоста Nginx, например, с помощью команды:

curl http://<SALTBOX_HOST>:<SALTBOX_WEB_SERVER_PORT>/auth/keycloak/realms/salt.box/.well-known/openid-configuration

Команда должна возвратить длинный ответ в формате JSON.

Пример конфигурационного файл Nginx для веб-интерфейса Salt.Box.

server {
server_name <NAME>;
client_max_body_size 256m;

access_log /var/log/nginx/saltbox_access.log;
error_log /var/log/nginx/saltbox_error.log;

location / {
add_header X-Frame-Options 'SAMEORIGIN';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection ‘upgrade’;

proxy_pass https://<SALTBOX_HOST>:<SALTBOX_WEB_SERVER_PORT>;
}

listen 443 ssl http2;
ssl_certificate <PATH_TO_CERT>;
ssl_certificate_key <PATH_TO_CERT_KEY>;
<OTHER SSL SETTTINGS DEPENDS ON CERT>
}

server {
server_name <NAME>;
listen 80;
return 301 https://$host$request_uri;
}

Не забудьте указать нужные значения в заполнителях < ... >.

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

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

Образы

Пример вывода команды docker image ls
IMAGE                                                                ID             DISK USAGE   CONTENT SIZE   EXTRA
mongo:7 f2b40853c0f7 1.19GB 297MB U
postgres:16-alpine 20edbde7749f 395MB 111MB U
registry.saltbox.pro/saltbox/saltbox-bridge/salt-master:v0.2.0 5696a18913f8 693MB 172MB U
registry.saltbox.pro/saltbox/saltbox-compose/keycloak-init:v0.2.0 06c45d9d0162 854MB 291MB U
registry.saltbox.pro/saltbox/saltbox-compose/keycloak:v0.2.0 1f88a21d8e81 843MB 288MB U
registry.saltbox.pro/saltbox/saltbox-compose/make-certs:v0.2.0 ee16a288884f 301MB 75.2MB U
registry.saltbox.pro/saltbox/saltbox-compose/mongodb:v0.2.0 8eccbfb6398a 734MB 180MB U
registry.saltbox.pro/saltbox/saltbox-compose/opa:v0.2.0 25d2760d765e 93.7MB 27.4MB U
registry.saltbox.pro/saltbox/saltbox-compose/proxy:v0.2.0 f3bf3d5f52e0 211MB 53.7MB U
registry.saltbox.pro/saltbox/saltbox-compose/rabbitmq:v0.2.0 4f58ad84ad23 391MB 116MB U
registry.saltbox.pro/saltbox/saltbox-compose/redis:v0.2.0 f1ab080cc86c 60.7MB 17.2MB U
registry.saltbox.pro/saltbox/saltbox-compose/sshfs:v0.2.0 1d5200b0d1fb 299MB 75.4MB U
registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 116be1106092 497MB 118MB U
registry.saltbox.pro/saltbox/saltbox-frontend-base:v0.2.0 46fdc0bb0dfb 222MB 56MB U
registry.saltbox.pro/saltbox/saltbox-frontend-core:v0.2.0 79f3476158f6 362MB 84.8MB U
registry.saltbox.pro/saltbox/saltbox-frontend-gateway:v0.2.0 0aac454b8a81 242MB 63.2MB U
registry.saltbox.pro/saltbox/saltbox-frontend-root-config:v0.2.0 4855b87f0103 212MB 53.9MB U
registry.saltbox.pro/saltbox/saltbox-gateway:v0.2.0 8fd71c7f084e 458MB 111MB U

Таблица 1. Загружаемые образы Docker
Образ DockerРазмерОписание
postgres:16-alpine111.0 MBСУБД PostgreSQL
registry.saltbox.pro/saltbox/saltbox-bridge/salt-master:v0.2.0172.0 MBСервер SaltStack (Salt Master)
registry.saltbox.pro/saltbox/saltbox-compose/keycloak-init:v0.2.0291.0 MB
Инициализация (bootstrap) сервера Keycloak (создание realm, пользователей, ролей)
registry.saltbox.pro/saltbox/saltbox-compose/keycloak:v0.2.0288.0 MBIdAM сервер KeyCloak
registry.saltbox.pro/saltbox/saltbox-compose/make-certs:v0.2.075.2 MBГенерация и управление TLS/SSL сертификатами
registry.saltbox.pro/saltbox/saltbox-compose/mongodb:v0.2.0180.0 MBСУБД MongoDB
registry.saltbox.pro/saltbox/saltbox-compose/opa:v0.2.027.4 MBOpen Policy Agent
registry.saltbox.pro/saltbox/saltbox-compose/proxy:v0.2.053.7 MB
Обратный прокси / маршрутизация HTTP(S)-запросов
registry.saltbox.pro/saltbox/saltbox-compose/rabbitmq:v0.2.0116.0 MBБрокер сообщений RabbitMQ
registry.saltbox.pro/saltbox/saltbox-compose/redis:v0.2.017.2 MBRedis server
registry.saltbox.pro/saltbox/saltbox-compose/sshfs:v0.2.075.4 MBПодключаемая файловая система SSHFS
registry.saltbox.pro/saltbox/saltbox-core:v0.2.0118.0 MBСерверные компоненты (ядро) Salt.Box
registry.saltbox.pro/saltbox/saltbox-frontend-base:v0.2.056.0 MBБазовый образ для компонентов пользовательского интерфейса
registry.saltbox.pro/saltbox/saltbox-frontend-core:v0.2.084.8 MBКомпоненты пользовательского интерфейса ядра Salt.Box
registry.saltbox.pro/saltbox/saltbox-frontend-gateway:v0.2.063.2 MBКомпоненты пользовательского интерфейса шлюза Salt.Box
registry.saltbox.pro/saltbox/saltbox-frontend-root-config:v0.2.053.9 MB
Конфигурация корневого frontend-приложения
registry.saltbox.pro/saltbox/saltbox-gateway:v0.2.0111.0 MBAPI-шлюз (единая точка входа к backend-сервисам)

Контейнеры

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

NAME                STATUS                   CONFIG FILES
saltbox exited(3), running(40) root/saltbox-compose/compose.yaml

Пример вывода команды docker container ls -a
CONTAINER ID   IMAGE                                                             COMMAND                  CREATED       STATUS                   PORTS                                                             NAMES
fdf94f107105 registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000/tcp saltbox-saltbox-core-taskiq-scheduler-1
ce6193540999 registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000/tcp saltbox-saltbox-core-tasks-watcher-1
1128455ccdc5 registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000/tcp saltbox-saltbox-core-1
b428a932a41d registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000/tcp saltbox-saltbox-core-jobs-watcher-1
9a60479df609 registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000/tcp saltbox-saltbox-core-taskiq-worker-1
a51f6d9c20af registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000/tcp saltbox-saltbox-core-faststream-redis-1
30e82cc66ac2 registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000/tcp saltbox-saltbox-core-salt-buffer-manager-1
0b94dfe9063a registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000/tcp saltbox-saltbox-core-faststream-rabbit-1
36f81bb77f52 registry.saltbox.pro/saltbox/saltbox-core:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Exited (0) 4 hours ago saltbox-saltbox-core-init-1
77199c95145e registry.saltbox.pro/saltbox/saltbox-gateway:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 8000-8001/tcp saltbox-saltbox-gateway-1
4ab20d13c97e registry.saltbox.pro/saltbox/saltbox-bridge/salt-master:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours 0.0.0.0:4505-4506->4505-4506/tcp, [::]:4505-4506->4505-4506/tcp saltbox-salt-master-1
bfbc7f409290 registry.saltbox.pro/saltbox/saltbox-compose/keycloak-init:v0.2.0 "/usr/local/bin/crea…" 4 hours ago Exited (0) 4 hours ago saltbox-keycloak-init-1
6aea3edb3c39 registry.saltbox.pro/saltbox/saltbox-compose/redis:v0.2.0 "entrypoint.sh '--sa…" 4 hours ago Up 4 hours (healthy) 0.0.0.0:6379->6379/tcp saltbox-redis-salt-1
a4187358fe61 registry.saltbox.pro/saltbox/saltbox-compose/keycloak:v0.2.0 "/usr/local/bin/star…" 4 hours ago Up 4 hours (healthy) 8080/tcp saltbox-keycloak-1
d2d7876c8a10 postgres:16-alpine "docker-entrypoint.s…" 4 hours ago Up 4 hours (healthy) 5432/tcp saltbox-keycloak-db-1
8d8d67138a7c registry.saltbox.pro/saltbox/saltbox-compose/opa:v0.2.0 "/opa run --server -…" 4 hours ago Up 4 hours 0.0.0.0:8181->8181/tcp, [::]:8181->8181/tcp saltbox-opa-1
89a91a9b11a0 registry.saltbox.pro/saltbox/saltbox-frontend-base:v0.2.0 "/docker/entrypoint.…" 4 hours ago Up 4 hours 80/tcp saltbox-saltbox-frontend-base-1
8e2afaeb28cf registry.saltbox.pro/saltbox/saltbox-compose/sshfs:v0.2.0 "/usr/local/bin/sshd…" 4 hours ago Up 4 hours 0.0.0.0:1022->1022/tcp, [::]:1022->1022/tcp saltbox-sshfs-1
1cceb0254f29 registry.saltbox.pro/saltbox/saltbox-compose/mongodb:v0.2.0 "/usr/local/bin/entr…" 4 hours ago Up 4 hours (healthy) 127.0.0.1:27017->27017/tcp saltbox-mongo-1
0c1e6b22c2fe registry.saltbox.pro/saltbox/saltbox-compose/proxy:dev "/docker/entrypoint.…" 4 hours ago Up 4 hours 0.0.0.0:443->443/tcp, [::]:443->443/tcp saltbox-proxy-1
7e6cf1a2dd4e registry.saltbox.pro/saltbox/saltbox-compose/make-certs:dev "/docker/entrypoint.…" 4 hours ago Exited (0) 4 hours ago saltbox-make-certs-1
95495ec49c98 registry.saltbox.pro/saltbox/saltbox-compose/redis:dev "entrypoint.sh '--sa…" 4 hours ago Up 4 hours 6379/tcp saltbox-redis-taskiq-1
643ed6c0705a registry.saltbox.pro/saltbox/saltbox-frontend-gateway:v0.2.0 "/docker/entrypoint.…" 4 hours ago Up 4 hours 80/tcp saltbox-saltbox-frontend-gateway-1
2cfd8128a89f registry.saltbox.pro/saltbox/saltbox-frontend-root-config:v0.2.0 "/docker/entrypoint.…" 4 hours ago Up 4 hours 80/tcp saltbox-saltbox-frontend-root-config-1
32a035379cb0 registry.saltbox.pro/saltbox/saltbox-frontend-core:v0.2.0 "/docker/entrypoint.…" 4 hours ago Up 4 hours 0.0.0.0:8003->80/tcp, [::]:8003->80/tcp saltbox-saltbox-frontend-core-1
a41005b4af53 registry.saltbox.pro/saltbox/saltbox-compose/rabbitmq:v0.2.0 "entrypoint.sh" 4 hours ago Up 4 hours (healthy) 0.0.0.0:5672->5672/tcp, [::]:5672->5672/tcp saltbox-rabbitmq-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-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Инициализатор ядра SaltBox.
Выполняет миграции базы данных, создание начальных настроек и проверку конфигурации ядра Salt.Box
saltbox-saltbox-gateway-1Шлюз Salt.Box
saltbox-salt-master-1Master-сервер SaltStack для управления миньонами
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) и объединение микрофронтендов пользовательского интерфейса системы SaltBox
saltbox-saltbox-frontend-gateway-1Компоненты пользовательского интерфейса шлюза Salt.Box

Тома

Пример вывода команды docker volume ls
DRIVER    VOLUME NAME
local 3a1d5abab3c2f1e3404a8d2e790a399c9823ff092e451c160893747a4ecb191b
local saltbox_keycloak-db_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

Таблица 3. Тома Docker, создаваемые при установке
Том DockerНачальный
размер
Описание
<256-битное имя в 16-ричной записи>< 1 МБДанные сервиса RabbitMQ
(используется контейнером saltbox-rabbitmq-1)
saltbox_saltbox_core_var< 1 МБКлючи 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_data67 МБДанные сервиса KeyCloak
(используется контейнером saltbox-keycloak-db-1)
saltbox_salt_master_pki< 1 МБХранилище ключей сервиса salt-master
(используется контейнером saltbox-salt-master-1)
saltbox_redis_taskiq_data< 1 МБДанные сервиса Taskiq
(используется контейнером saltbox-redis-taskiq-1)
saltbox_mongo_data306 МБДанные СУБД MongoDB
(используется контейнером saltbox-mongo-1)
saltbox_redis_salt_data< 1 МБДанные сервера Redis
(используется контейнером saltbox-redis-salt-1)
saltbox_redis_salt_certs< 1 МБХранилище сертификатов сервера 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< 1 МБ
(используется контейнером saltbox-salt-master-1)
saltbox_salt_repos< 1 МБСхемы 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)

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

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

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