Установка через Docker Compose
Требования к вычислительной мощности¶
Для функционирования Нимбиус требуется минимальные технические требования:
- 4 физических ядра ЦП;
- 16 ГБ RAM;
- 16 ГБ дискового пространства.
Требования к установленному ПО¶
Для запуска Нимбиус необходимо предварительно установить Docker до актуальной версии.
$ sudo docker version
Client:
Version: 20.10.21
API version: 1.41
Go version: go1.18.1
Git commit: 20.10.21-0ubuntu1\~22.04.3
Built: Thu Apr 27 05:57:17 2023
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.21
API version: 1.41 (minimum version 1.12)
Go version: go1.18.1
Git commit: 20.10.21-0ubuntu1\~22.04.3
Built: Thu Apr 27 05:37:25 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.12-0ubuntu1\~22.04.3
GitCommit:
runc:
Version: 1.1.7-0ubuntu1\~22.04.2
GitCommit:
docker-init:
Version: 0.19.0
GitCommit:
Содержимое дистрибутива¶
В состав дистрибутива входят:
- data - директория, в которой хранятся служебные файлы приложений;
- docker-compose.yaml - файл для развертывания продукта;
- .env - переменные конфигурации Нимбиус;
- images.tar - образы контейнеров Нимбиус;
- terraform-assets - сформированные манифесты terraform для работы с Yandex.Cloud.
Конфигурации переменных хранятся в файле «.env»
## Базовая конфигурация:
# Тег образов компонентов
NIMBIUS_BASE_IMAGE_TAG=<хх.хх.хх>
NIMBIUS_DB_IMAGE_TAG=<хх.хх.хх>
NIMBIUS_UI_IMAGE_TAG=<хх.хх.хх>
NIMBIUS_BILLING_IMAGE_TAG=<хх.хх.хх>
NIMBIUS_TF_IMAGE_TAG=<хх.хх.хх>
NIMBIUS_KEYCLOAK_IMAGE_TAG=<хх.хх.хх>
# Сервер БД. По умолчанию используется контейнер с именем хоста 'nimbius-db'
DB_SRV=nimbius-db
# Порт БД
DB_PORT=5432
# Пользователь БД
DB_USER=miq
# Пароль БД
DB_PASSWD=miq
# Имя БД. По умолчанию при первом запуске сервер
# генерирует БД с именем 'vmdb_production'
DB_NAME=vmdb_production
# Публичный IP или имя хоста
PUBLIC_IP={{your_public_ip}}
# Публичный порт портала администратора
PUBLIC_ADMIN_PORT=8443
# Публичный порт портала пользователя
PUBLIC_USER_PORT=443
# Устанавливать пакет дополнение Нимбиус
# при первичной инициализации БД (включено=true)
EXT_PACK_INSTALL=true
## Конфигурация сервиса биллинга:
BILLING_DB_NAME=billing
BILLING_DB_USER=billing
BILLING_DB_PASSWD=billing
BILLING_PUBLIC_PORT=3000
## Конфигурация сервиса Terraform:
# Пользователь и пароль БД для сервиса
TF_DB_USER=terraform
TF_DB_PASSWD=terraform-password
## Конфигурация сервиса Keycloak:
# Применять ли конфигурацию для httpd:
KEYCLOAK_ENABLED=true
# DB name for keycloak data
KC_DB_NAME=keycloak
# Пользователь и пароль БД
KC_DB_USER=keycloak
KC_DB_PASSWD=keycloak
# Публичный порт веб-интерфейса
KC_SERVER_PORT=7788
# Имя пользователя и пароль администратора Keycloack
KC_ADMIN_USERNAME=keycloak
KC_ADMIN_PASSWORD=keycloak
# Переменные для конфига httpd:
OIDC_PROVIDER_METADATA_URL=https://nimbius
OIDC_CLIENT_ID=nimbius
OIDC_CLIENT_SECRET=Ni24MB42IuS
OIDC_OAUTH_INTROSPECTION_ENDPOINT=https://nimbius
KC_REALM_API_PATH=https://nimbius/realms/nimbius-realm
# EVM RESTART TIME(HH24:MM). Default: 03:00 everyday
# EVM_AUTORESTART = true - перезапуск включен
# EVM_AUTORESTART = false - перезапуск выключен
EVM_AUTORESTART="false"
EVM_RESTART_HOUR=03
EVM_RESTART_MINUTE=30
Примечание
Вместо тега <хх.хх.хх> необходимо использовать последний актуальный релиз.
Если переменная EVM_AUTORESTART отсутствует в .env, то перезапуск отключен.
Если переменные EVM_RESTART_HOUR и EVM_RESTART_MINUTE отсутствуют в .env, то перезапуск будет выполняться в 03:00 по времени контейнера.
Инструкции развертывания из файла docker-compose.yaml
version: "3.9"
services:
nimbius-db:
image: registry.nimbius.tech/nimbius-public/containers-public/postgres:${NIMBIUS_DB_IMAGE_TAG}
restart: always
container_name: nimbius-db
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWD}
ports:
- "5432:5432"
volumes:
- "./data/db-data:/var/lib/postgresql/data:rw,z"
nimbius-base:
image: registry.nimbius.tech/nimbius-public/containers-public/nimbius-base:${NIMBIUS_BASE_IMAGE_TAG}
restart: always
container_name: nimbius-core
hostname: nimbius-server
environment:
DATABASE_URL: postgresql://${DB_USER}:${DB_PASSWD}@${DB_SRV}/${DB_NAME}?encoding=utf8&pool=5&wait_timeout=5
DATABASE_SRV: postgresql://${DB_USER}:${DB_PASSWD}@${DB_SRV}:${DB_PORT}/
EXT_PACK_INSTALL: ${EXT_PACK_INSTALL}
DB_SRV: ${DB_SRV}
DB_NAME: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASSWD: ${DB_PASSWD}
OIDC_PROVIDER_METADATA_URL: ${OIDC_PROVIDER_METADATA_URL}
OIDC_CLIENT_ID: ${OIDC_CLIENT_ID}
OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}
OIDC_OAUTH_INTROSPECTION_ENDPOINT: ${OIDC_OAUTH_INTROSPECTION_ENDPOINT}
KEYCLOAK_ENABLED: ${KEYCLOAK_ENABLED}
NIMBIUS_APPLIANCE: ${PUBLIC_IP}:${PUBLIC_ADMIN_PORT}
EVM_AUTORESTART: ${EVM_AUTORESTART}
EVM_RESTART_HOUR: ${EVM_RESTART_HOUR}
EVM_RESTART_MINUTE: ${EVM_RESTART_MINUTE}
ports:
- ${PUBLIC_ADMIN_PORT}:443
depends_on:
- "nimbius-db"
links:
- nimbius-db:db
volumes:
- "./data/certs:/var/www/miq/vmdb/certs/:rw,z"
- "./data/ext-pack/:/var/www/miq/vmdb/nimbius/:z"
- "./data/ansible/:/etc/ansible/:z"
- "./data/GUID:/var/www/miq/vmdb/GUID:rw"
nimbius-ui:
image: registry.nimbius.tech/nimbius-public/containers-public/nimbius-ui:${NIMBIUS_UI_IMAGE_TAG}
restart: always
container_name: nimbius-ui
environment:
VITE_KEYCLOAK_ENABLED: ${KEYCLOAK_ENABLED}
VITE_KEYCLOAK_API: ${KC_REALM_API_PATH}
VITE_KEYCLOAK_CLIENT: ${OIDC_CLIENT_ID}
VITE_KEYCLOAK_PASSWORD: ${OIDC_CLIENT_SECRET}
volumes:
- "./data/certs:/etc/nginx/certs:z"
ports:
- ${PUBLIC_USER_PORT}:443
depends_on:
- "nimbius-base"
links:
- nimbius-base:nimbius
nimbius-billing:
image: registry.nimbius.tech/nimbius-public/containers-public/nimbius-billing:${NIMBIUS_BILLING_IMAGE_TAG}
restart: always
container_name: nimbius-billing
environment:
DB_SRV: ${DB_SRV}
DB_PORT: ${DB_PORT}
DB_NAME: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASSWD: ${DB_PASSWD}
DATABASE_SRV: postgresql://${DB_USER}:${DB_PASSWD}@${DB_SRV}:${DB_PORT}/
BILLING_DB: postgresql://${BILLING_DB_USER}:${BILLING_DB_PASSWD}@${DB_SRV}:${DB_PORT}/${BILLING_DB_NAME}
BILLING_DB_NAME: ${BILLING_DB_NAME}
BILLING_DB_USER: ${BILLING_DB_USER}
BILLING_DB_PASSWD: ${BILLING_DB_PASSWD}
PGRST_DB_URI: postgresql://postgrest:${BILLING_DB_PASSWD}@${DB_SRV}:${DB_PORT}/${BILLING_DB_NAME}
PGRST_DB_ANON_ROLE: billing
PGRST_DB_SCHEMAS: billing
ports:
- ${BILLING_PUBLIC_PORT}:3000
depends_on:
- "nimbius-db"
- "nimbius-base"
links:
- nimbius-db:nimbius-db
volumes:
- "./data/billing-migrations:/migrations"
nimbius-tf:
image: registry.nimbius.tech/nimbius-public/containers-public/nimbius-tf:${NIMBIUS_TF_IMAGE_TAG}
restart: always
container_name: nimbius-terraform
environment:
TZ: 'Europe/Moscow'
DB_SRV: ${DB_SRV}
DB_PORT: ${DB_PORT}
DB_USER: ${DB_USER}
DB_PASSWD: ${DB_PASSWD}
TF_DB_USER: ${TF_DB_USER}
TF_DB_PASSWD: ${TF_DB_PASSWD}
TF_VAR_DB_USER: ${TF_DB_USER}
TF_VAR_DB_PASSWD: ${TF_DB_PASSWD}
TF_VAR_DB_SRV: ${DB_SRV}
links:
- nimbius-db:nimbius-db
depends_on:
- "nimbius-db"
- "nimbius-base"
volumes:
- "./data/tf-infra:/infra:rw,z"
working_dir: /infra
nimbius-keycloak:
image: registry.nimbius.tech/nimbius-public/containers-public/nimbius-keycloak:${NIMBIUS_KEYCLOAK_IMAGE_TAG}
restart: always
container_name: nimbius-keycloak
depends_on:
- "nimbius-db"
environment:
NIMBIUS_DB_USER: ${DB_USER}
NIMBIUS_DB_PASSWD: ${DB_PASSWD}
NIMBIUS_DB_PORT: ${DB_PORT}
DB_ADDR: ${DB_SRV}
DB_DATABASE: ${KC_DB_NAME}
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://${DB_SRV}:${DB_PORT}/${KC_DB_NAME}
KC_DB_USERNAME: ${KC_DB_USER}
KC_DB_PASSWORD: ${KC_DB_PASSWD}
KC_HOSTNAME_URL: https://${PUBLIC_IP}:${KC_SERVER_PORT}
KC_HOSTNAME_ADMIN_URL: https://${PUBLIC_IP}:${KC_SERVER_PORT}
KEYCLOAK_ADMIN: ${KC_ADMIN_USERNAME}
KEYCLOAK_ADMIN_PASSWORD: ${KC_ADMIN_PASSWORD}
KEYCLOAK_ENABLED: ${KEYCLOAK_ENABLED}
ports:
- ${KC_SERVER_PORT}:8443
volumes:
- "./data/certs:/opt/certs/:z"
Установка сертификатов¶
При использовании корпоративного или внешнего СА, положить сертификаты SSL ~/nimbius/data/certs
Важно
Если не выполнить это действия, будут сгенерированы самоподписанные сертификаты!
Процедура запуска платформы через docker-compose¶
Перед первым запуском необходимо:
-
скопировать дистрибутив на целевой хост и распаковать.
tar -xzf nimbius.tgz
-
добавить образы контейнеров в локальный registry.
docker load -i images.tar
-
В файле .env изменить необходимые параметры.
-
(Опциально) При использовании корпоративного или внешнего СА, положить сертификаты SSL ~/nimbius/data/certs.
Важно
Если не выполнить это действия, будут сгенерированы самоподписанные сертификаты!
-
Выполнить команду для запуска сервиса
docker-compose up --d
Сервис доступен по адресу
https://<FQDN>:8443
- Логин по умолчанию: admin
- Пароль по умолчанию: smartvm
Cервис «Keycloak» доступен по адресу
https://<FQDN>:7788
- Логин по умолчанию: keycloak
- Пароль по умолчанию: keycloak
Примечание
Для изменения портов сервисов на собственные необходимо изменить значения PUBLIC_ADMIN_PORT, KC_SERVER_PORT в файле .env
Пояснение к пакету расширений Нимбиус¶
Пакет расширений загружается при первом запуске сервиса. Для этого необходимо выставить значение true параметра EXT_PACK_INSTALL в файле .env. Если значение параметра false, при запуске сервиса пакет не будет автоматически загружен.
После успешной загрузки пакета расширений в интерфейсе Нимбиус будут присутствовать перечень услуг-шаблонов и дополнительные домены (расширения), как на рисунке ниже.
Перечень услуг-шаблонов:
- «Виртуальная машина»;
- «Создание ВМ в публичном облаке Яндекс.Облако»;
- «Создание ВМ в публичном облаке Селектел»;
Процедура остановки платформы¶
Процедуры запуска и остановки платформы состоят из следующих процессов:
-
Процессы серверной части
Для запуска необходимо запустить базу данных затем платформу.
Для остановки необходимо остановить платформу затем базу данных. -
Процессы модуля приложения
Для запуска необходимо запустить контейнер платформы.Для остановки необходимо остановить контейнер платформы.# sudo docker start NIMBIUS_CONTAINER_NAME
Для проверки работоспособности сервисов подключитесь к консоли контейнера с приложением и введите команду# sudo docker stop NIMBIUS_CONTAINER_NAME
appliance_console
.