Перейти к содержанию

Команды утилиты#

Работа по подготовке окружения выполняется с помощью скрипта 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.

Позиционный аргумент

Описание

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

lis_bucket

Позволяет создать бакеты в контейнере Image Store. Настройки бакетов указываются в секциях "LUNA_IMAGE_STORE_bucket_name_ADDRESS" в настройках утилиты Storages (--config) или в настройках сервиса Configurator (--luna-config).

Список доступных именованных аргументов: --help, --verbose, --config, --luna-config, --ignore-integrity, --platform_version, --s3-buckets, --local-buckets, --profile, --ADDITIONAL_SERVICES_USAGE, аргументы для передачи тегов настроек с адресами бакетов.

s3_bucket

Позволяет создать бакеты в хранилище S3 без обращения к сервису Image Store. Настройки бакетов указываются в секции "S3", а названия бакетов в секциях "LUNA_IMAGE_STORE_bucket_name_ADDRESS" в настройках утилиты Storages (--config) или в настройках сервиса Configurator (--luna-config).

Список доступных именованных аргументов: --help, --verbose, --config, --luna-config, --ignore-integrity, --platform_version, --profile, --ADDITIONAL_SERVICES_USAGE, --LAMBDA_S3.

influx_bucket

Позволяет создать бакеты в БД Influx.

Список доступных именованных аргументов: --help, --verbose, --config, --luna-config, --ignore-integrity, --platform_version, --profile, --LUNA_MONITORING. |

aggregated_influx_bucket

Позволяет создать бакет "luna_monitoring_aggregated" в БД Influx и включить сбор статистики (см. раздел "Подсчет статистики выполненных запросов и оценок" в руководстве администратора).

Список доступных именованных аргументов: --help, --verbose, --config, --luna-config, --ignore-integrity, --platform_version, --profile, --dry, --LUNA_MONITORING. |

database

Обеспечивает создание баз данных, добавление функций VLMatch, создание сценариев миграции для баз данных LUNA PLATFORM (PostgreSQL или Oracle) и управление ими.

Список доступных именованных аргументов: --help, --verbose, --config, --luna-config, --ignore-integrity, --platform_version, --profile, --db-password, --db-user, --ADDITIONAL_SERVICES_USAGE, аргументы для передачи тегов настроек баз данных.

configs

Выполняет миграцию настроек сервиса Configurator.

Список доступных именованных аргументов: --help, --verbose, --config, --luna-config, --ignore-integrity, --platform_version, --profile, --configs-revision.

all_entities

Использует позиционные аргументы lis_bucket, influx_bucket, aggregated_influx_bucket, database и configs.

Список доступных именованных аргументов: все вышеперечисленные и --dump-file.

Указание сервиса для подготовки окружения по одному позиционному аргументу из списка выше

<service_name>

Название сервиса (configurator, remote_sdk и пр.) для которого нужно подготовить окружение.

Сущность для подготовки окружения задается отдельно в именованном аргументе --entity, доступном для каждого сервиса.

См. список доступных именованных аргументов в команде luna_prepare prepare <service> --help.

Описание всех именованных аргументов приведено в таблице "Именованные аргументы".

Важно! Не существует позиционного аргумента, подготавливающего окружение для всех сервисов. Профиль (ссылка на список сервисов) задается в именованном аргументе --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.