Общие сценарии администрирования
Эти сценарии применимы для всех продуктов из линейки 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.
Результат выполнения сохраняется в переменную 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"}'
Сценарий выполняет 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.
Сценарий 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) — время ожидания (в секундах) между проверками доступности экземпляра.
Сценарий используется только при аварийно-восстановительных работах, для целей тестирования и при разработке. Позволяет менять только динамические настройки 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 с удаленных хостов и сохранения их на локальной машине.
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'.
Описание сценария:
-
Создание директории для журналов на локальной машине:
- Проверяет наличие указанной директории на локальной машине и создает её, если она отсутствует.
- Путь к директории указывается в переменной
tarantool_collected_logs_local_path.
-
Сбор журналов экземпляров на локальный хост:
- Сохраняет журналы экземпляров с удаленных хостов в указанную директорию на локальной машине.
- Журналы собираются из путей, указанных в переменных продукта и сохраняются в директорию
tarantool_collected_logs_local_path.
Сценарий используется для публикации и применения миграций для 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"}'.
Описание сценария:
-
Подготовка миграций:
- Удаляет предыдущие миграции на удаленном хосте.
- Копирует файлы миграций из директории, указанной в
tarantool_migrations_directory, в целевую директорию("/tmp/tarantool.enterprise.migrations/scenario) на удаленном хосте.
-
Публикация миграций:
- Выполняет команду
tt migrations publishдля публикации миграций на удаленном хосте.
- Выполняет команду
-
Применение миграций:
- Выполняет команду
tt migrations 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",}' \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.
- Настройка VShard:
- Плейбук запускает команду
tt replicaset vshard bootstrap.
- Плейбук запускает команду
Этот сценарий используется для полного удаления кластера 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
-
Подтверждение удаления кластера:
- Задача выводит запрос для подтверждения операции, информируя о том, что будут удалены все данные. Принимает ввод
yesилиnoдля продолжения или отмены операции.
- Задача выводит запрос для подтверждения операции, информируя о том, что будут удалены все данные. Принимает ввод
-
Удаление компонентов Tarantool:
- Импортирует роль
tarantool.enterprise.uninstall, которая удаляет все компоненты Tarantool на удаленных хостах.
- Импортирует роль
-
Остановка и отключение служб systemd:
- Останавливает и отключает все службы systemd Tarantool через роль
tarantool.enterprise.systemd, чтобы гарантировать полное удаление экземпляров.
- Останавливает и отключает все службы systemd Tarantool через роль
-
Удаление директорий кластера:
- Удаляет все директории, связанные с Tarantool.
-
Удаление конфигурации кластера из ETCD по префиксу:
- Удаляет конфигурацию кластера Tarantool из ETCD по префиксу, расположенному в
tarantool_config_storage_prefix.
- Удаляет конфигурацию кластера Tarantool из ETCD по префиксу, расположенному в
-
Удаление конфигурации ротации журналов:
- Выполняет импорт роли
tarantool.enterprise.logrotate, которая удаляет конфигурации ротации журналов, еслиtarantool_configure_logrotateустановлено вtrue. - Удаляет файл конфигурации logrotate для каждого хоста, расположенный в
logrotate_instance_config_dirс именем файла{{ inventory_hostname }}.conf.
- Выполняет импорт роли
Для гибкого управления удалением добавлена поддержка тегов. Теги позволяют удалять только определенные компоненты кластера Если запускать сценарий без указания тегов, он удалит только экземпляры Tarantool, не затрагивая Cluster Manager (TCM) или Scheduler (TCS). Используйте теги, чтобы управлять удалением других компонентов:
-
tarantool- Удаляет только экземпляры Tarantool и GRPC сервисы.
- Удаляет конфигурацию кластера Tarantool из ETCD по префиксу.
- Используйте этот тег для удаления приложений Tarantool.
-
tcm- Удаляет Cluster Manager (TCM).
- Используется для удаления менеджера кластера.
-
tcs- Удаляет Scheduler (TCS).
- Применяется для удаления компонентов TCS.
-
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",}'