Команды утилиты#
Работа по подготовке окружения выполняется с помощью скрипта luna_prepare
, которому передаются определенные команды, позволяющие детально настроить процесс подготовки.
Список доступных команд:
- check — команда, позволяющая проверить имеющееся окружение в соответствии с указанными сведениями о версии LUNA PLATFORM
- list — команда, позволяющая показать список доступных версий LUNA PLATFORM для подготовки окружения
- prepare — основная команда, позволяющая подготовить окружение в соответствии с указанными сведениями о версии LUNA PLATFORM
- load_dump — команда, позволяющая загрузить настройки из пользовательского дамп-файла в БД Configurator
- logs — команда, позволяющая отобразить или сохранить в файл специальные логи, полученные на этапе подготовки окружения
Для каждой команды кроме команды list
есть свои аргументы. Список возможных аргументов с их базовым описанием можно получить с помощью справочного аргумента --help
.
Расширенное описание аргументов приведено в разделе "Именованные аргументы".
Кроме того, в команде prepare
есть два типа аргументов — позиционные и именованные (см. раздел "Команда prepare") и для каждого типа аргумента также можно получить справочную информацию.
Например, можно получить список аргументов для команды load_dump
с помощью следующей команды:
docker run \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/storages:v.0.4.23 \
bash -c "luna_prepare load_dump --help"
Важно! Крайне рекомендуется пользоваться справочными аргументами во время работы с утилитой Storages.
Команда list#
Утилита Storages работает не со всеми версиями LUNA PLATFORM. Команда list
позволяет получить список поддерживаемых версий выполнения подготовки окружения.
Важно! Список версий также содержит релизы, предназначенные для внутреннего использования. Следует использовать только публичные версии LUNA PLATFORM.
Пример команды получения списка версий:
docker run \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/storages:v.0.4.23 \
bash -c "luna_prepare list"
Пример успешного выполнения команды:
[2024-02-07 16:20:50+0300] [storages] [INFO]: Available platform versions for surroundings preparation:
[2024-02-07 16:20:50+0300] [storages] [INFO]: v.5.46.1, v.5.47.1, v.5.47.4, v.5.49.1, v.5.51.0, v.5.51.4, v.5.51.6, v.5.53.0, v.5.54.0, v.5.55.0, v.5.56.0, v.5.57.0
Команда check#
Команда check
позволяет проверить текущее окружение и получить информацию о том, что нужно для установки окружения другой версии. С помощью данной команды, например, можно убедиться действительно ли у пользователя установлено окружение определенной версии.
Для команды check
доступны следующие аргументы:
Пример команды проверки текущего окружения:
docker run \
--rm \
--network=host \
dockerhub.visionlabs.ru/luna/storages:v.0.4.23 \
bash -c "luna_prepare check \
--platform_version=v.5.53.0 \
--profile=common \
--luna-config=http://10.16.5.177:5070"
В примере выполняется проверка окружения для всех сервисов LUNA PLATFORM v.5.53.0, кроме сервисов Backport 3 и Backport 4, а также проверка наличия бакетов по соответствующим настройкам "LUNA_IMAGE_STORE_bucket_name_ADDRESS" из сервиса Configurator, запущенного по адресу из аргумента --luna-config
.
Если установленное окружение подходит под версию, указанную в аргументе --platform_version
, то в логах появится сообщение подобного содержания:
[2024-02-06 13:57:01+0300] [storages] [INFO]: The surrounding state is completely prepared for platform version 'v.5.53.0'
Если установленное окружение не подходит под версию, указанную в аргументе --platform_version
, то в логах появится сообщение подобного содержания:
[2024-02-08 18:19:48+0300] [storages] [INFO]: luna_tasks[v.3.18.0] will be added database entity: tasks_database_migration with revision 75d45d56f7f7
[2024-02-08 18:19:48+0300] [storages] [INFO]: luna_tasks[v.3.18.0] will be updated configs migration version from '6a3d8839' to 'e7490433'
Это означает, что при выполнении команды prepare будет выполнена миграция БД Tasks и обновлена ревизия миграции настроек Configurator на указанную.
Команда prepare#
Prepare — это команда, которая подготавливает окружение в соответствии с указанной версией LUNA PLATFORM.
В качестве подготовки окружения понимается следующее:
- Подготовка бакетов в InfluxDB для работы мониторинга
- Подготовка бакетов для сервиса Image Store, позволяющих хранить пользовательские данные (изображение, метаданные, архивы и пр.)
- Подготовка БД Influx для сбора агрегированной статистики сервисом Admin (см. раздел "Подсчет статистики выполненных запросов и оценок" в руководстве администратора)
- Подготовка баз данных, добавление функций VLMatch, создание сценариев миграции для баз данных LUNA PLATFORM (PostgreSQL или Oracle) и управление ими
- Выполнение миграции/загрузка настроек в БД Configurator
- Загрузка дамп-файлов в БД сервиса Configurator
Все вышеописанные задачи указываются в качестве отдельных аргументов команды (см. ниже).
Примечание. При необходимости можно записывать логи выполнения подготовки окружения для решения специфических проблем, требующих обращения к специалистам VisionLabs. Для этого необходимо указать дополнительные данные в команде подготовки окружения. По умолчанию логи не сохраняются. См. раздел "Команда logs" для более подробной информации.
Важно! Утилита Storages не будет выполнять подготовку окружения для сервисов, которые отключены в настройке "ADDITIONAL_SERVICES_USAGE".
Типы передаваемых аргументов#
Для команды prepare
можно передать дополнительные аргументы, позволяющие детально настроить подготовку окружения.
Аргументы могут быть:
- позиционные (обязательные)
- именованные (необязательные, имеющие значение по умолчанию)
Позиционный аргумент должен находиться строго после команды prepare
. Именованные аргументы указываются после позиционных.
В таблице ниже представлен список возможных позиционных и именованных аргументов для команды prepare
.
Позиционный аргумент |
Описание |
---|---|
Подготовка сущностей |
|
|
Позволяет создать бакеты в контейнере Image Store.
Настройки бакетов указываются в секциях "LUNA_IMAGE_STORE_bucket_name_ADDRESS" в настройках утилиты Storages ( Список доступных именованных аргументов: |
|
Позволяет создать бакеты в хранилище S3 без обращения к сервису Image Store. Настройки бакетов указываются
в секции "S3", а названия бакетов в секциях "LUNA_IMAGE_STORE_bucket_name_ADDRESS" в настройках утилиты Storages ( Список доступных именованных аргументов: |
|
Позволяет создать бакеты в БД Influx. Список доступных именованных аргументов: |
|
Позволяет создать бакет "luna_monitoring_aggregated" в БД Influx и включить сбор статистики (см. раздел "Подсчет статистики выполненных запросов и оценок" в руководстве администратора). Список доступных именованных аргументов: |
|
Обеспечивает создание баз данных, добавление функций VLMatch, создание сценариев миграции для баз данных LUNA PLATFORM (PostgreSQL или Oracle) и управление ими. Список доступных именованных аргументов: |
|
Выполняет миграцию настроек сервиса Configurator. Список доступных именованных аргументов: |
|
Использует позиционные аргументы Список доступных именованных аргументов: все вышеперечисленные и |
Указание сервиса для подготовки окружения по одному позиционному аргументу из списка выше |
|
|
Название сервиса ( Сущность для подготовки окружения задается отдельно в именованном аргументе См. список доступных именованных аргументов в команде |
Описание всех именованных аргументов приведено в таблице "Именованные аргументы".
Важно! Не существует позиционного аргумента, подготавливающего окружение для всех сервисов. Профиль (ссылка на список сервисов) задается в именованном аргументе --profile
, который доступен для всех позиционных аргументов кроме <service_name>
. Для позиционного аргумента <service_name>
отдельная логика выбора окружения для подготовки, указываемая во флаге --entity
. Если именованный аргумент --entity
не задан, то будет подготовлено окружение для всех сущностей.
См. пример команды
prepare
в разделе "Сценарий обновления окружения".
Команда load_dump#
Команда load_dump
позволяет загрузить пользовательские настройки в сервис Configurator.
Для команды load_dump
доступны следующие аргументы:
Например, можно загрузить пользовательские настройки из комплекта поставки с помощью следующей команды:
docker run \
--rm \
--network=host \
-v /var/lib/luna/current/extras/conf/platform_settings.json:/srv/platform_settings.json \
dockerhub.visionlabs.ru/luna/storages:v.0.4.23 \
bash -c "luna_prepare load_dump \
-v \
--dump-file=/srv/platform_settings.json"
Пример успешного выполнения:
[2024-02-07 16:25:33+0300] [storages] [INFO]: getting settings-dump file
[2024-02-07 16:25:33+0300] [storages] [INFO]: start updating settings
[2024-02-07 16:25:34+0300] [storages] [INFO]: update setting with name 'ADDITIONAL_SERVICES_USAGE'
[2024-02-07 16:25:34+0300] [storages] [INFO]: update setting with name 'LICENSE_VENDOR'
...
[2024-02-07 16:25:34+0300] [storages] [INFO]: applied settings: 20 out of 20
[2024-02-07 16:25:34+0300] [storages] [INFO]: database is ready to use
Команда logs#
Команда logs
позволяет получить специальные логи в JSON-формате, созданные на этапе подготовки окружения. Каждый лог содержит следующую информацию о выполненном действии:
migration_action
— выполненное действие (create
,update
,downgrade
илиdelete
)migration_datetime
— время выполнения действияmigration_problems
— возникшие проблемыmigration_source
— источник (например, исходная версия ревизии)migration_target
— цель (например, версия ревизии, на которую была выполнена миграция)target_version
— версия LUNA PLATFORM, соответствующая выполняемому действию
Не все поля лога могут быть заполнены (например, migration_problems': None
). Также некоторые логи могут отсутствовать, если не возникло никаких проблем (например, логи подготовки сущности influx_bucket).
Получение логов имеет необязательный характер. Рекомендуется настраивать получение логов в случае возникновения проблем, которые требуют обращения к специалистам VisionLabs.
Логи сохраняются в отдельный файл формата БД SQLite.
Для команды logs
доступны следующие аргументы:
Для обеспечения записи логов во время подготовки окружения, требуется:
- создать директорию для хранения файла БД SQLite
- изменить владельца и группу для указанной директории
- в команде подготовки окружения примонтировать созданную директорию
- в команде подготовки окружения установить переменную окружения "DB_PATH", которая будет указывать путь к примонтированной директории (по умолчанию "/srv/sqlite_db/data")
Пример команды подготовки окружения с записью логов#
Создайте директорию для хранения файла БД SQLite:
mkdir -p /var/lib/luna/sqlite_db/data
Измените владельца и группу для указанной директории:
chown -R 1001:0 /var/lib/luna/sqlite_db/data
Выполните подготовку окружения с сохранением логов в файл БД SQLite:
docker run \
--rm \
--env=DB_PATH="/srv/my_data" \
-v /var/lib/luna/sqlite_db/data/:/srv/my_data \
--network=host \
dockerhub.visionlabs.ru/luna/storages:v.0.4.23 \
bash -c "luna_prepare prepare all_entities \
--platform_version=v.5.57.0"
Здесь:
-v /root/my_data/:/srv/sqlite_db/data \
— монтирование директории для хранения файла БД SQLite--env=DB_PATH="/srv/my_data" \
— указание переменной окружения, содержащей путь до директории с файлом БД SQLite внутри контейнера
Пример команды получения логов подготовки окружения#
После подготовки окружения можно получить логи с помощью следующей команды:
docker run \
--rm \
--network=host \
--env=DB_PATH="/srv/sqlite_db/data" \
-v /var/lib/luna/sqlite_db/data/:/srv/sqlite_db/data \
dockerhub.visionlabs.ru/luna/storages:v.0.4.23 \
bash -c "luna_prepare logs \
--save-file=/srv/sqlite_db/data/storages_logs.log \
--tail=30"
Здесь:
--save-file=/srv/sqlite_db/data/storages_logs.log
— адрес внутри контейнера, куда должен сохраниться файл с логами. В данном случае файл сохранится в примонтированную директорию и будет доступен на хост-машине.--tail=30
— количество строк с логами в файлеstorages_logs.log
.