VK Docs logo
Помощь
Обновлена 23 октября 2025 г. в 06:18

Общие сценарии администрирования

Эти сценарии применимы для всех продуктов из линейки Tarantool Enterprise.

Запуск экземпляров

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/start.yml --limit ${LIMIT}

Остановка экземпляров

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/stop.yml --limit ${LIMIT}

Перезагрузка экземпляров

Сценарий принудительно перезапускает указанные экземпляры Tarantool.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/restart.yml --limit ${LIMIT}

Автоматическое резервирование

В сценарии резервирования архивируются рабочие директории экземпляров Tarantool и конфигурационные файлы.

Количество параллельных задач по умолчанию равно 1, то есть все экземпляры будут обрабатываться последовательно. Изменить можно с помощью переменной tarantool_ansible_serial_executors.

Порядок резервирования произвольный.

  • PATH_TO_BACKUP_DIRECTORY — путь к директории на удаленном сервере, в которой будут собраны резервные копии.
docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  -e PATH_TO_BACKUP_DIRECTORY=${PATH_TO_BACKUP_DIRECTORY} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",      "tarantool_remote_backups_dir":"'${PATH_TO_BACKUP_DIRECTORY}'"  }' \  playbooks/backup.yml

Обязательные переменные:

  • tarantool_remote_backups_dir (string) — путь к директории на удаленном сервере, в которой будут собраны резервные копии.

Дополнительные переменные:

  • tarantool_ansible_serial_executors (number) — количество одновременных процессов резервирования.
    • 1 ← (default)
  • tarantool_fetch_backups (boolean) — флаг для копирования архивов резервных копий с удаленного сервера на локальный.
    • true
    • false ← (default)
  • tarantool_fetch_backups_dir (string) — директория для сбора архивов резервных копий на локальном сервере.
    • /tmp ← (default)
  • tarantool_backup_wait_snapshot_timeout (number) - полное время ожидания (в секундах) создания snapshot, если он уже создавался на момент старта резервирования.
    • 1000 ← (default)
  • tarantool_backup_wait_snapshot_delay (number) - интервал (в секундах) между проверками создания snapshot.
    • 5 ← (default)

Автоматическое восстановление

Сценарий используется для восстановления из резервных копий, созданных с помощью Ansible Tarantool Enterprise.

Количество параллельных задач по умолчанию равно 1, то есть все экземпляры будут обрабатываться последовательно. Изменить можно с помощью переменной tarantool_ansible_serial_executors.

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

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  -e PATH_TO_BACKUP_DIRECTORY=${PATH_TO_BACKUP_DIRECTORY} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",      "tarantool_remote_backups_dir":"'${PATH_TO_BACKUP_DIRECTORY}'"  }' \  playbooks/restore.yml

Обязательные переменные:

  • tarantool_remote_backups_dir (string) — путь к директории на удаленном сервере, в которой расположены архивы с резервными копиями.

Дополнительные переменные:

  • tarantool_force_restore (boolean) — указание, что необходимо восстановить не только файлы экземпляра(ов), но и общие. Например, конфигурационный файл кластера.
    • true
    • false ← (default)
  • tarantool_allow_alien_backup (boolean) — флаг для отключения проверки принадлежности резервной копии соответствующему экземпляру. Данный флаг необходим только в случае восстановления из резервной копии после создания чистого кластера с нуля.
    • true
    • false ← (default)
  • tarantool_skip_cleanup_on_restore (boolean) — флаг для отключения очистки файлов экземпляра(ов), которые восстанавливаются из резервной копии.
    • true
    • false ← (default)
  • backup_time (string) — время, к которому должен быть выбран ближайший бэкап для восстановления. Формат времени: YYYY-MM-DD-HHMMSS (например, 2024-08-15-140000).
    • backup_time = null (default) — используется самый свежий бэкап из директории tarantool_remote_backups_dir.
    • backup_time != null — сценарий восстанавливает состояние экземпляра из резервной копии, которая была создана максимально близко к заданному времени backup_time.

Включение режима резервирования экземпляров

Сценарий используется для перевода экземпляра(ов) кластера в режим резервирования. На сервере инсталлятора создаются текстовые файлы по каждому физическому серверу. Файлы содержат список путей, необходимых для создания резервной копии конкретного сервера.

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    -e PATH_TO_BACKUP_DIRECTORY=${PATH_TO_BACKUP_DIRECTORY} \    -e PATH_TO_WRITE_BACKUP_LIST_FILES="/tmp" \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"tarantool",        "path_to_write_backup_list_files":"'${PATH_TO_WRITE_BACKUP_LIST_FILES}'"    }' \    playbooks/backup_start.yml --limit ${LIMIT}

Выключение режима резервирования экземпляров

Сценарий используется для выключения режима резервирования экземпляра(ов) кластера.

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    -e PATH_TO_BACKUP_DIRECTORY=${PATH_TO_BACKUP_DIRECTORY} \    -e PATH_TO_WRITE_BACKUP_LIST_FILES="/tmp" \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"tarantool",        "path_to_write_backup_list_files":"'${PATH_TO_WRITE_BACKUP_LIST_FILES}'"    }' \    playbooks/backup_stop.yml --limit ${LIMIT}

Переключение лидера в наборах реплик

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/switch_leaders_to.yml --limit ${LIMIT}

Выбор лидера в наборах реплик

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",      "promote_timeout": 30,  }' \  playbooks/promote_leader.yml --limit ${LIMIT}

Дополнительные переменные:

  • promote_timeout (integer) — время ожидания в секундах выполнения promote на инстансе. Например: '{"promote_timeout": 30}'.

Проверка работоспособности

Сценарий запрашивает произвольный экземпляр кластера о наличии issues в Tarantool Cartridge.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/check_is_healthy.yml

Ожидание работоспособности

Сценарий запрашивает произвольный экземпляр кластера о наличии issues в Tarantool Cartridge в течение указанного времени.

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"tarantool"    }' \    playbooks/wait_is_healthy.yml

Регулируйте поведение с помощью следующих переменных:

  • wait_members_alive_retries (number) — количество проверок доступности экземпляров (по умолчанию: 10).
  • wait_members_alive_delay (number) — таймаут между проверками доступности экземпляров (по умолчанию: 5).
  • wait_cluster_has_no_issues_retries (number) — количество проверок консистентности кластера (по умолчанию: 10).
  • wait_cluster_has_no_issues_delay (number) — таймаут между проверками консистентности кластера (по умолчанию: 5).
  • allow_warning_issues (boolean) - разрешает иметь warning issues в кластере (по умолчанию: false).
  • allow_critical_issues (boolean) - разрешает иметь как warning, так и critical issues. Полностью игнорирует ошибки в кластере (по умолчанию: false).
  • show_issues (boolean) - печатает в консоль ошибки (по умолчанию: false).

Изменение cluster-cookie

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  -e NEW_CARTRIDGE_CLUSTER_COOKIE=${NEW_CARTRIDGE_CLUSTER_COOKIE} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",      "new_cartridge_cluster_cookie":"'${NEW_CARTRIDGE_CLUSTER_COOKIE}'"  }' \  playbooks/change_cookie.yml

Обязательные переменные:

  • new_cartridge_cluster_cookie (string) — новый секретный пароль кластера.

Восстановление экземпляра

Сценарий используется для игнорирования ошибок при восстановлении из snapshot- и WAL-файлов. Опцию нельзя оставлять включенной по умолчанию. Сценарий временно устанавливает значение в true и возвращает обратно после запуска экземпляра.

Подробности про механизм восстановления см. в документации по Tarantool.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool"  }' \  playbooks/force_recovery.yml --limit ${LIMIT}

Восстановление экземпляра Tarantool 3.x

Сценарий set_force_recovery_3x.yml включает переменную окружения TT_FORCE_RECOVERY=true через systemd override для указанных экземпляров Tarantool 3.x. Это позволяет запустить инстанс даже при повреждённых .snap файлах.

Также предусмотрена опциональная генерация snapshot и перезапуск в обычном режиме после восстановления.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",      "tarantool_shared_hosts":"vm_1",      "tarantool_snapshot":true  }' \  playbooks/set_force_recovery_3x.yml

Переменные:

  • tarantool_shared_hosts (string или list) — список хостов или одиночное имя хоста, на которых будет выполняться сценарий.
  • tarantool_snapshot (boolean) — выполнять box.snapshot() после запуска инстанса с TT_FORCE_RECOVERY=true. Если включено, инстанс будет перезапущен в обычном режиме после создания snapshot.
    Значения:
    • true — создать snapshot и выполнить перезапуск
    • false — не выполнять snapshot (по умолчанию)

Пересоздание экземпляра

Вариант 1: Продукты на основе Tarantool 3.x (TDB 2.x, TCS, TQE)

Сценарий используется для пересоздания экземпляра из мастера продуктов на основе Tarantool 3.x.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",      "tarantool_3_0_version_support":true  }' \  playbooks/rebootstrap.yml --limit ${LIMIT}

Обязательные переменные:

  • tarantool_3_0_version_support (bool) — поддержка Tarantool 3. Обязательное значение -- true.

Дополнительные переменные:

  • tarantool_wait_alive_retries (integer) — количество повторных проверок доступности экземпляра Tarantool после рестарта.
  • tarantool_wait_alive_delay (integer) — время ожидания (в секундах) между проверками доступности экземпляра.

Вариант 2: Приложения на основе Tarantool Cartridge

Вариант запуска в случае использования Tarantool Cartridge.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool"  }' \  playbooks/rebootstrap.yml --limit ${LIMIT}

Изменение настроек кластера

Сценарий используется для изменения настроек экземпляров кластера.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool"  }' \  playbooks/settings.yml --limit ${LIMIT}

Изменение настроек кластера в runtime

Сценарий используется только при аварийно-восстановительных работах, для целей тестирования и при разработке. Позволяет менять только динамические настройки: box.cfg() и cartridge.cfg().

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    -e CLUSTER_NEW_SETTINGS=${CLUSTER_NEW_SETTINGS} \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"tarantool",        "cluster_new_settings":"'${CLUSTER_NEW_SETTINGS}'",    }' \    playbooks/runtime_settings.yml --limit ${LIMIT}

Обязательные переменные:

  • cluster_new_settings (string) — перечень изменяемых настроек в строковом формате JSON. Например: '{"memtx_memory":123456789}'.

Исключение экземпляров из кластера

Сценарий включает два варианта исключения экземпляров из кластера Tarantool:

  1. Исключение одного или нескольких экземпляров.
  2. Исключение целого набора реплик.

Запуск сценария в Docker для исключения одного/нескольких экземпляров

На исключаемых экземплярах в инвентаре добавляем expelled: true.

Пример конфигурации:

hosts:    kvee-r01-s01:      config:        advertise_uri: localhost:3401        http_port: 8080        log: /app/logs/kvee/kvee-r01-s01.log        vinyl_cache: 0        vinyl_memory: 0      expelled: true

Запуск сценария исключения

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/expel_instances.yml

Запуск сценария в Docker для исключения целого набора реплик

На исключаемом наборе в инвентаре добавляем weight: 0.

Пример конфигурации:

replicaset_vag_storage_02:    hosts:      kvee-r02-s01:      kvee-r02-s02:    vars:      failover_priority:        - kvee-r02-s02        - kvee-r02-s01      replicaset_alias: vag-storage-02      roles:        - vshard-storage        - crud-storage        - metrics        - expirationd      weight: 0

Запуск сценария исключения

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/expel_instances.yml

Добавьте параметр expelled: true для исключаемого набора реплик.

Пример конфигурации:

replicaset_vag_storage_02:    hosts:      kvee-r02-s01:      kvee-r02-s02:    vars:      failover_priority:        - kvee-r02-s02        - kvee-r02-s01      replicaset_alias: vag-storage-02      roles:        - vshard-storage        - crud-storage        - metrics        - expirationd      weight: 0      expelled: true

Запуск сценария исключения

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/expel_instances.yml

Управление пользователями Tarantool

Сценарий предназначен для управления пользователями в Tarantool.

Поддерживает три основные функции:

  1. Создание пользователей.
  2. Удаление пользователей.
  3. Назначение пользователям прав доступа к объектам.

Для управления сценарием используется переменная tarantool_users.

Переменная tarantool_users содержит список пользователей Tarantool, каждый из которых может иметь следующие поля:

  • name -- имя пользователя.
  • state -- состояние пользователя: присутствует (present) или отсутствует (absent). По умолчанию: present.
  • password (опционально) -- пароль пользователя. Если не указать, то пользователь будет создан без пароля.
  • grant (опционально) -- привилегии пользователя на определенные объекты (см. документацию по Tarantool):
    • permissions -- права, которые назначаются пользователю (см. документацию по Tarantool).
    • object_type -- тип объекта, для которого выдаются права доступа (см. документацию по Tarantool).
    • object_name -- имя объекта, для которого выдаются права доступа.

Задать переменную можно следующим образом:

  1. В инвентаре:

    Укажите tarantool_users или tarantool_users_file_path непосредственно в вашем инвентаре.

  2. В --extra-vars:

    При запуске сценария передайте переменную tarantool_users с помощью extra vars.

  3. В файле (JSON, YAML):

    Создайте файл с пользователями (например, tarantool_users_example.yml) и укажите путь к этому файлу в переменной tarantool_users_file_path.

    Пример файла tarantool_users_example.yml

    tarantool_users:  - name: tarantool_user_1    password: Password123  - name: tarantool_user_2    state: absent  - name: tarantool_user_3    grant:      - permissions: "read,create"        object_type: space        object_name: _user      - permissions: "read,create,execute"        object_type: space        object_name: _user

Пример запуска сценария в Docker с использованием файла tarantool_users_example.yml

  • PATH_TO_TARANTOOL_USERS — путь к файлу с пользователями, в котором содержится переменная tarantool_users.

    docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -v ${PATH_TO_TARANTOOL_USERS}:/ansible/tarantool_users_example.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars  '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"tarantool",        "tarantool_users_file_path":"/ansible/tarantool_users_example.yml"    }' \    playbooks/manage_tarantool_users.yml

Пример запуска сценария в Docker с использованием --extra-vars

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars  '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"tarantool",        "tarantool_users": [            {                "name": "tarantool_user_1",                "password": "Password123",                "state": "present"            },            {                "name": "tarantool_user_2",                "state": "absent"            },            {                "name": "tarantool_user_3",                "state": "present",                "grant": [                    {                        "permissions": "read,create",                        "object_type": "space",                        "object_name": "_user"                    },                    {                        "permissions": "read,create,execute",                        "object_type": "space",                        "object_name": "_user"                    }                ]            }        ]    }' \    playbooks/manage_tarantool_users.yml

Пример запуска сценария в Docker с использованием зашифрованного файла tarantool_users_example.yml

Чтобы сохранить конфиденциальные данные, можно использовать инструмент шифрования Ansible Vault.

  1. Зашифруйте файл:

    ansible-vault encrypt ${PATH_TO_TARANTOOL_USERS}
  2. Отредактируйте файл:

    ansible-vault edit ${PATH_TO_TARANTOOL_USERS}
  3. Запустите сценарий с зашифрованным файлом:

    docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -v ${PATH_TO_TARANTOOL_USERS}:/ansible/tarantool_users_example.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars  '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"tarantool",        "tarantool_users_file_path":"/ansible/tarantool_users_example.yml"    }' \    --ask-vault-pass \    playbooks/manage_tarantool_users.yml

Изменение паролей пользователей Tarantool Enterprise

Сценарий используется для изменения паролей пользователей Tarantool (задаются через box.schema.user).

Пользователь должен существовать. Создание пользователя и назначение ему прав рекомендуется делать через сценарий управления пользователями Tarantool.

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    -e NEW_USERS_CREDENTIALS=${NEW_USERS_CREDENTIALS} \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"tarantool",        "new_users_credentials":"'${NEW_USERS_CREDENTIALS}'",    }' \    playbooks/change_credentials.yml

Обязательные переменные:

  • new_users_credentials (string) — JSON с новыми паролями пользователей. Например: '{"username":"new-secret"}'.

Сбор логов экземпляров Tarantool, TCF, TQE API

Добавлено в версии 1.6.0

Этот сценарий используется для сбора логов экземпляров Tarantool, TCF, TQE API с удаленных хостов и сохранения их на локальной машине.

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e TARANTOOL_COLLECTED_LOGS_LOCAL_PATH=${TARANTOOL_COLLECTED_LOGS_LOCAL_PATH} \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \    --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "tarantool_collected_logs_local_path":"'${TARANTOOL_COLLECTED_LOGS_LOCAL_PATH}'",    }' \    playbooks/collect_logs.yml

Обязательные переменные:

  • tarantool_collected_logs_local_path (string) — Путь на локальной машине, где будут сохранены собранные логи. Например: '/path/to/local/logs'.

Описание сценария:

  1. Создание директории для логов на локальной машине:

    • Проверяет наличие указанной директории на локальной машине и создает её, если она отсутствует.
    • Путь к директории указывается в переменной tarantool_collected_logs_local_path.
  2. Сбор логов экземпляров на локальный хост:

    • Сохраняет логи экземпляров с удаленных хостов в указанную директорию на локальной машине.
    • Логи собираются из путей, указанных в переменных продукта и сохраняются в директорию tarantool_collected_logs_local_path.

Применение миграций с помощью tt CLI

Добавлено в версии 1.7.0

Сценарий используется для публикации и применения миграций для Tarantool с помощью команд tt migrations publish/apply.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",      "tt_connect_username":"client",      "tt_connect_password":"'${CLIENT_PASSWORD}'",      "tarantool_migrations_directory": "/ansible/migrations"  }' \  playbooks/tt_migrations.yml

Обязательные переменные:

  • tarantool_migrations_directory (string): Путь на локальной машине к директории с миграциями, которые будут опубликованы и применены на удаленных хостах.

Переменные для управления:

  • tt_connect_username (string): Имя пользователя для подключения к Tarantool при tt migrations apply. По умолчанию: client.
  • tt_connect_password (string): Пароль для подключения к Tarantool при tt migrations apply. По умолчанию: secret.
  • tarantool_config_storage_username (string): Имя для подключения к Tarantool Config Storage. По умолчанию: "".
  • tarantool_config_storage_password (string): Пароль для подключения к Tarantool Config Storage. По умолчанию: "".
  • tt_etcd_host (string): Хост etcd для подключения. По умолчанию: "{{ tarantool_etcd_host | default('etcd') }}".
  • tt_etcd_port (string): Порт etcd для подключения. По умолчанию: "{{ tarantool_etcd_port | default('2379') }}".
  • tt_etcd_prefix (string): Путь префикса в etcd, который указывает расположение конфигурации кластера. По умолчанию: "{{ tarantool_etcd_prefix }}".
  • tt_bin_path (string): Путь к исполняемому файлу tt на удаленном хосте. По умолчанию: "{{ cartridge_app_instances_dir }}/{{ cartridge_app_name }}.{{ inventory_hostname }}".
  • tt_etcd_username (string): Имя пользователя для логина в etcd.
  • tt_etcd_password (string): Пароль пользователя для логина в etcd.
  • tarantool_config_etcd_ssl_key_file (string) — путь к клиентскому ssl-ключу. Так же для роли tt этот путь можно задать через переменную tt_ssl_key_file_path. Например: '{"tt_ssl_key_file_path": "/certs/client.key"}'.
  • tarantool_config_etcd_ssl_cert_file (string) — путь к клиентскому ssl-сертификату. Так же для роли tt этот путь можно задать через переменную tt_ssl_cert_file_path. Например: '{"tt_ssl_cert_file_path": "/certs/client.crt"}'.
  • tarantool_config_etcd_ssl_ca_file (string) — путь к доверенному ca-сертификату. Так же для роли tt этот путь можно задать через переменную tt_ssl_ca_file_path. Например: '{"tt_ssl_ca_file_path": "/certs/rootCA.crt"}'.
  • tarantool_config_etcd_ssl_verify_host (string) — Наличие проверки серверного сертификата etcd. Например: '{"tarantool_config_etcd_ssl_verify_host": "False"}'.

Описание сценария:

  1. Подготовка миграций:

    • Удаляет предыдущие миграции на удаленном хосте.
    • Копирует файлы миграций из директории, указанной в tarantool_migrations_directory, в целевую директорию("/tmp/tarantool.enterprise.migrations/scenario) на удаленном хосте.
  2. Публикация миграций:

    • Выполняет команду tt migrations publish для публикации миграций на удаленном хосте.
  3. Применение миграций:

    • Выполняет команду tt migrations apply для применения опубликованных миграций на удаленном хосте, используя учетные данные и параметры подключения.

Первоначальная настройка VShard с помощью tt CLI

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/tt_vshard_bootstrap.yml --limit ${LIMIT}

Этот сценарий используется для выполнения первоначальной настройки VShard в Tarantool с помощью tt replicaset vshard bootstrap.

Обязательные переменные

  • tt_bin_path (string): Путь к исполняемому файлу tt на удаленном хосте. По умолчанию: "{{ cartridge_app_instances_dir }}/{{ cartridge_app_name }}.{{ inventory_hostname }}".

Переменные для управления

  • tt_connect_username (string): Имя пользователя для подключения к Tarantool при выполнении vshard bootstrap. По умолчанию: client.
  • tt_connect_password (string): Пароль для подключения к Tarantool при выполнении vshard bootstrap. По умолчанию: secret.
  • tt_timeout (uint): Таймаут завершения операции, в секундах. По умолчанию: 10.

Описание сценария

  1. Настройка VShard:
    • Плейбук запускает команду tt replicaset vshard bootstrap.

Удаление кластера Tarantool

Этот сценарий используется для полного удаления кластера Tarantool. Он останавливает все экземпляры, очищает каталоги и удаляет все данные, включая конфигурации ротации логов.

docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/uninstall.yml

Описание сценария

  1. Подтверждение удаления кластера:

    • Задача выводит запрос для подтверждения операции, информируя о том, что будут удалены все данные. Принимает ввод yes или no для продолжения или отмены операции.
  2. Удаление компонентов Tarantool:

    • Импортирует роль tarantool.enterprise.uninstall, которая удаляет все компоненты Tarantool на удаленных хостах. Для кластера Tarantool 3.x следует указать tarantool_3_0_version_support: true.
  3. Остановка и отключение служб systemd:

    • Останавливает и отключает все службы systemd Tarantool через роль tarantool.enterprise.systemd, чтобы гарантировать полное удаление экземпляров.
  4. Удаление директорий кластера:

    • Удаляет все директории, связанные с Tarantool.
  5. Удаление конфигурации логротации:

    • Выполняет импорт роли tarantool.enterprise.logrotate, которая удаляет конфигурации ротации логов, если tarantool_configure_logrotate установлено в true.
    • Удаляет файл конфигурации logrotate для каждого хоста, расположенный в logrotate_instance_config_dir с именем файла {{ inventory_hostname }}.conf.

Управление удалением компонентов с помощью тегов

Добавлено в версии 1.8.0

Для гибкого управления удалением добавлена поддержка тегов. Теги позволяют удалять только определенные компоненты кластера Если запускать сценарий без указания тегов, он удалит только экземпляры Tarantool, не затрагивая Cluster Manager (TCM) или Scheduler (TCS). Используйте теги, чтобы управлять удалением других компонентов:

  1. tarantool

    • Удаляет только экземпляры Tarantool и GRPC сервисы.
    • Используйте этот тег для удаления приложений Tarantool.
  2. tcm

    • Удаляет Cluster Manager (TCM).
    • Используется для удаления менеджера кластера.
  3. tcs

    • Удаляет Scheduler (TCS).
    • Применяется для удаления компонентов TCS.
  4. tcf

    • Удаляет Cluster Federation (TCF).
    • Применяется для удаления компонентов TCF.

Примеры использования

  • Для удаления только экземпляров Tarantool:
docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/uninstall.yml --tags tarantool --limit $TARANTOOL_HOSTS
  • Для удаления Cluster Manager (TCM):
docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/uninstall.yml --tags tcm --limit $TCM_HOST
  • Для удаления Scheduler (TCS):
docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/uninstall.yml --tags tcs --limit $SHEDULER_HOSTS
  • Для удаления Cluster Federation (TCF):
docker run --network host -it --rm \  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \  -e SUPER_USER_NAME=${SUPER_USER_NAME} \  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \  ansible-playbook -i /ansible/inventories/hosts.yml \  --extra-vars '{      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",      "super_user":"'${SUPER_USER_NAME}'",      "tarantool_shared_become_user":"tarantool",  }' \  playbooks/uninstall.yml --tags tcf --limit $TCF_HOSTS

Добавление и удаление пользовательских файлов

Этот сценарий используется для доставки пользовательских файлов на хосты, а также удаления этих файлов. Примеры файлов:

  • контекстный файл конфигурации;
  • TLS-сертификат;
  • токен аутентификации keycloack для Tarantool Clusters Federation.
docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -v ${TARANTOOL_CONTEXT_SRC_PATH}:/source/path/to/file:Z \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \      --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "tarantool_shared_become":"tarantool",        "tarantool_context_src_path":"/source/path/to/file",        "tarantool_context_dst_path":"/destination/path/to/file",        "tarantool_context_file_mode":"0744",      }' \    playbooks/copy_custom_file.yml

Обязательные переменные:

  • tarantool_context_src_path (string) -- путь к файлу на локальной машине, который будет загружен на виртуальные машины с кластером Tarantool. Директория, в которую нужно скопировать файлы, должна существовать.

Опциональные переменные:

  • tarantool_context_dst_path (string) -- путь на виртуальной машине, по которому будет размещён пользовательский файл. Значение по умолчанию: cartridge_data_dir (/app/tarantool/${cartridge_app_name}/workdir).
  • tarantool_context_file_mode (string) -- режим доступа до файла. Значение по умолчанию: 0640.
  • delete_custom_file (bool) -- режим работы сценария: копирование файлов на виртуальные машины (False) или удаление загруженных файлов (True). Значение по умолчанию: False. Если переменная имеет значение True, сценарий удалит заданные файлы с виртуальной машины. В этом случае должна быть указана переменная tarantool_context_dst_path, которая содержит путь до удаляемого файла. Переменную tarantool_context_src_path при этом можно опустить.

Добавление файлов на разные хосты

Этот сценарий позволяет добавить файлы на выбранную виртуальную машину как в одну директорию, так и в разные директории на этой машине. Например, если необходимо положить файл в директории с названием каждого экземпляра (/router-r01-i01/file, /storage-r01-i01/file, /storage-r01-i02), можно использовать такую команду:

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -v ${TARANTOOL_CONTEXT_SRC_PATH}:/source/path/to/file:Z \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \      --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "tarantool_shared_become":"tarantool",        "tarantool_context_src_path":"/source/path/to/file",        "tarantool_context_dst_path":"/{{ inventory_hostname }}/path/to/file",        "tarantool_context_file_mode":"0744",      }' \    playbooks/copy_custom_file.yml

Также можно подготовить несколько разных файлов для экземпляров Tarantool и положить каждый из них в директорию, соответствующую нужному узлу:

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -v ${TARANTOOL_CONTEXT_SRC_PATH}:/source/path/to/file:Z \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \      --extra-vars '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "tarantool_shared_become":"tarantool",        "tarantool_context_src_path":"/{{ inventory_hostname }}/path/to/file",        "tarantool_context_dst_path":"/{{ inventory_hostname }}/path/to/file",        "tarantool_context_file_mode":"0744",      }'