Общие сценарии администрирования
Эти сценарии применимы для всех продуктов из линейки 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) - разрешает иметь
warningissues в кластере (по умолчанию:false). - allow_critical_issues (boolean) - разрешает иметь как
warning, так иcriticalissues. Полностью игнорирует ошибки в кластере (по умолчанию:false). - show_issues (boolean) - печатает в консоль ошибки (по умолчанию:
false).
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}
Сценарий 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 (по умолчанию)
Сценарий используется для пересоздания экземпляра из мастера продуктов на основе 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) — время ожидания (в секундах) между проверками доступности экземпляра.
Вариант запуска в случае использования 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}
Сценарий используется только при аварийно-восстановительных работах, для целей тестирования и при разработке. Позволяет менять только динамические настройки: 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:
- Исключение одного или нескольких экземпляров.
- Исключение целого набора реплик.
Запуск сценария в Docker для исключения одного/нескольких экземпляров
На исключаемых экземплярах в инвентаре добавляем expelled: true.
Пример конфигурации:
hosts:kvee-r01-s01:config:advertise_uri: localhost:3401http_port: 8080log: /app/logs/kvee/kvee-r01-s01.logvinyl_cache: 0vinyl_memory: 0expelled: 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-s01replicaset_alias: vag-storage-02roles:- vshard-storage- crud-storage- metrics- expirationdweight: 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-s01replicaset_alias: vag-storage-02roles:- vshard-storage- crud-storage- metrics- expirationdweight: 0expelled: 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_users.
Переменная tarantool_users содержит список пользователей Tarantool, каждый из которых может иметь следующие поля:
- name -- имя пользователя.
- state -- состояние пользователя: присутствует (
present) или отсутствует (absent). По умолчанию:present. - password (опционально) -- пароль пользователя. Если не указать, то пользователь будет создан без пароля.
- grant (опционально) -- привилегии пользователя на определенные объекты (см. документацию по Tarantool):
- permissions -- права, которые назначаются пользователю (см. документацию по Tarantool).
- object_type -- тип объекта, для которого выдаются права доступа (см. документацию по Tarantool).
- object_name -- имя объекта, для которого выдаются права доступа.
Задать переменную можно следующим образом:
-
В инвентаре:
Укажите
tarantool_usersилиtarantool_users_file_pathнепосредственно в вашем инвентаре. -
В
--extra-vars:При запуске сценария передайте переменную
tarantool_usersс помощьюextra vars. -
В файле (JSON, YAML):
Создайте файл с пользователями (например,
tarantool_users_example.yml) и укажите путь к этому файлу в переменнойtarantool_users_file_path.Пример файла
tarantool_users_example.ymltarantool_users:- name: tarantool_user_1password: Password123- name: tarantool_user_2state: absent- name: tarantool_user_3grant:- permissions: "read,create"object_type: spaceobject_name: _user- permissions: "read,create,execute"object_type: spaceobject_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.
-
Зашифруйте файл:
ansible-vault encrypt ${PATH_TO_TARANTOOL_USERS} -
Отредактируйте файл:
ansible-vault edit ${PATH_TO_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"}' \--ask-vault-pass \playbooks/manage_tarantool_users.yml
Сценарий используется для изменения паролей пользователей 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"}'.
Добавлено в версии 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'.
Описание сценария:
-
Создание директории для логов на локальной машине:
- Проверяет наличие указанной директории на локальной машине и создает её, если она отсутствует.
- Путь к директории указывается в переменной
tarantool_collected_logs_local_path.
-
Сбор логов экземпляров на локальный хост:
- Сохраняет логи экземпляров с удаленных хостов в указанную директорию на локальной машине.
- Логи собираются из путей, указанных в переменных продукта и сохраняются в директорию
tarantool_collected_logs_local_path.
Добавлено в версии 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"}'.
Описание сценария:
-
Подготовка миграций:
- Удаляет предыдущие миграции на удаленном хосте.
- Копирует файлы миграций из директории, указанной в
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на удаленном хосте. По умолчанию:"{{ 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.
- Настройка 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 на удаленных хостах. Для кластера Tarantool 3.x следует указатьtarantool_3_0_version_support: true.
- Импортирует роль
-
Остановка и отключение служб systemd:
- Останавливает и отключает все службы systemd Tarantool через роль
tarantool.enterprise.systemd, чтобы гарантировать полное удаление экземпляров.
- Останавливает и отключает все службы systemd Tarantool через роль
-
Удаление директорий кластера:
- Удаляет все директории, связанные с Tarantool.
-
Удаление конфигурации логротации:
- Выполняет импорт роли
tarantool.enterprise.logrotate, которая удаляет конфигурации ротации логов, еслиtarantool_configure_logrotateустановлено вtrue. - Удаляет файл конфигурации logrotate для каждого хоста, расположенный в
logrotate_instance_config_dirс именем файла{{ inventory_hostname }}.conf.
- Выполняет импорт роли
Добавлено в версии 1.8.0
Для гибкого управления удалением добавлена поддержка тегов. Теги позволяют удалять только определенные компоненты кластера Если запускать сценарий без указания тегов, он удалит только экземпляры Tarantool, не затрагивая Cluster Manager (TCM) или Scheduler (TCS). Используйте теги, чтобы управлять удалением других компонентов:
-
tarantool- Удаляет только экземпляры Tarantool и GRPC сервисы.
- Используйте этот тег для удаления приложений 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) -- путь на виртуальной машине, по которому будет размещён пользовательский файл.
Значение по умолчанию:
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",}'