ATE Documentation portal logo
Помощь
Обновлена 30 октября 2026 г. в 12:05

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

Эти сценарии применимы для всех продуктов из линейки 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) - полное время ожидания (в секундах) создания снимка, если он уже создавался на момент старта резервирования.
    • 1000 ← (default)
  • tarantool_backup_wait_snapshot_delay (number) - интервал (в секундах) между проверками создания снимка.
    • 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",      "promote_timeout": 30,  }' \  playbooks/switch_leader.yml --limit ${LIMIT}

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

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

Выполнение произвольного Lua-кода на экземплярах Tarantool 3.x

Сценарий выполняет произвольный Lua-код на указанных экземплярах кластера Tarantool 3.x. Результат выполнения сохраняется в переменную eval_res.

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_eval_body":"'${EVAL_BODY}'"  }' \  playbooks/eval_3_0.yml

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

  • tarantool_eval_body (string) — Lua-код для выполнения.

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

# Проверка статуса репликации... --extra-vars '{"tarantool_eval_body": "return box.info.replication()"}'# Проверка режима read-only... --extra-vars '{"tarantool_eval_body": "return box.info.ro"}'# Мониторинг ребалансировки vshard... --extra-vars '{"tarantool_eval_body": "return vshard.storage.rebalancing_is_in_progress()"}' \  --extra-vars '{"tarantool_shared_hosts": "core_storage-r01-i01"}'

Обновление схемы базы данных на экземплярах Tarantool 3.x

Сценарий выполняет box.schema.upgrade() на указанных экземплярах кластера Tarantool 3.x и автоматически проверяет результат выполнения. Если обновление схемы завершилось с ошибкой, плейбук прерывается с сообщением об ошибке.

box.schema.upgrade() обновляет формат системных спейсов (_space, _index, _user, _func, _cluster, _schema и др.) до версии, ожидаемой текущей версией 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",      "tarantool_shared_hosts":"'${HOSTS}'"  }' \  playbooks/eval_schema_update.yml

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

  • tarantool_shared_hosts (string) — группа хостов или имя экземпляра, на которых будет выполнено обновление схемы. Рекомендуется запускать последовательно на роутерах и мастер-узлах, аналогично тому, как это делается внутри continuous_update.yml.

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

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

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

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.yml

Переменные:

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

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

Сценарий используется для пересоздания экземпляра из мастера продуктов на основе 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",  }' \  playbooks/rebootstrap.yml --limit ${LIMIT}

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

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

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

Сценарий используется только при аварийно-восстановительных работах, для целей тестирования и при разработке. Позволяет менять только динамические настройки box.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, TCF, TQE API

Этот сценарий используется для сбора журналов экземпляров 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

Сценарий используется для публикации и применения миграций для 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.
  • tt_config_storage_endpoint (list): Список конечных точек централизованного хранилища конфигурации (etcd или хранилище на основе Tarantool) для подключения. Для etcd — список URL-строк (например, ["http://etcd:2379"]), для хранилища на основе Tarantool — список словарей с учётными данными и параметрами. Значение по умолчанию: "{{ tarantool_config_storage_endpoints }}".
  • tt_config_storage_prefix (string): Путь префикса в централизованном хранилище конфигурации (etcd или хранилище на основе Tarantool), который указывает расположение конфигурации кластера. Значение по умолчанию: "{{ tarantool_config_storage_prefix }}".
  • tt_bin_path (string): Путь к исполняемому файлу tt на удаленном хосте. По умолчанию: "{{ tarantool_app_instances_dir }}/{{ tarantool_app_name }}.{{ inventory_hostname }}".
  • tt_config_storage_username (string) — Имя пользователя для логина в централизованное хранилище конфигурации. Применяется только в режиме etcd; в режиме хранилища на основе Tarantool учётные данные передаются в составе элементов tt_config_storage_endpoint. Значение по умолчанию: "{{ tarantool_etcd_username | default('') }}".
  • tt_config_storage_password (string) — Пароль пользователя для логина в централизованное хранилище конфигурации. Применяется только в режиме etcd; в режиме хранилища на основе Tarantool учётные данные передаются в составе элементов tt_config_storage_endpoint. Значение по умолчанию: "{{ tarantool_etcd_password | default('') }}".
  • tarantool_etcd_ssl_key_file (string) — путь к клиентскому ssl-ключу. Так же для роли tt этот путь можно задать через переменную tt_ssl_key_file_path. Например: '{"tt_ssl_key_file_path": "/certs/client.key"}'.
  • tarantool_etcd_ssl_cert_file (string) — путь к клиентскому ssl-сертификату. Так же для роли tt этот путь можно задать через переменную tt_ssl_cert_file_path. Например: '{"tt_ssl_cert_file_path": "/certs/client.crt"}'.
  • tarantool_etcd_ssl_ca_file (string) — путь к доверенному ca-сертификату. Так же для роли tt этот путь можно задать через переменную tt_ssl_ca_file_path. Например: '{"tt_ssl_ca_file_path": "/certs/rootCA.crt"}'.
  • tarantool_etcd_ssl_verify_host (string) — Наличие проверки серверного сертификата etcd. Например: '{"tarantool_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 на удаленном хосте. По умолчанию: "{{ tarantool_app_instances_dir }}/{{ tarantool_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 на удаленных хостах.
  3. Остановка и отключение служб systemd:

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

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

    • Удаляет конфигурацию кластера Tarantool из ETCD по префиксу, расположенному в tarantool_config_storage_prefix.
  6. Удаление конфигурации ротации журналов:

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

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

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

  1. tarantool

    • Удаляет только экземпляры Tarantool и GRPC сервисы.
    • Удаляет конфигурацию кластера Tarantool из ETCD по префиксу.
    • Используйте этот тег для удаления приложений 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) -- путь на виртуальной машине, по которому будет размещён пользовательский файл. Значение по умолчанию: tarantool_data_dir ({{ tarantool_base_dir }}/{{ tarantool_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",      }'
Была ли статья полезна?