Общие сценарии администрирования¶
Эти сценарии применимы для всех продуктов из линейки Tarantool Enterprise.
Примечание
Указание LIMIT обязательно для сценариев start, stop, restart, rebootstrap, force recovery.
Запуск экземпляр(ов)¶
Примечание
Сценарий работает для кластера Tarantool 3.x с указанием переменной tarantool_3_0_version_support: 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/start.yml --limit ${LIMIT}
Остановка экземпляра(ов)¶
Примечание
Сценарий работает для кластера Tarantool 3.x с указанием переменной tarantool_3_0_version_support: 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/stop.yml --limit ${LIMIT}
Перезагрузка экземпляра(ов)¶
Сценарий принудительно перезапускает указанные экземпляры Tarantool.
Примечание
Сценарий работает для кластера Tarantool 3.x с указанием переменной tarantool_3_0_version_support: 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/restart.yml --limit ${LIMIT}
Автоматическое резервирование¶
Изменено в версии 1.5.0: Добавлена поддержка версии Tarantool-3.x .
Изменено в версии 1.10.2: Добавлены переменные tarantool_backup_wait_snapshot_timeout и tarantool_backup_wait_snapshot_delay для
ожидания окончания snapshot в случае, если snapshot создается на момент запуска процедуры резервирования.
Изменено в версии 1.14.0: Добавлена поддержка резервного копирования кластеров Tarantool с использованием
централизованного хранилища конфигурации (Tarantool Config Storage).
Теперь при указании переменной tarantool_3_0_version_support: true сценарий
резервирования может получать кластерную конфигурацию не только из etcd,
но и напрямую из Tarantool Config Storage (по переменным tarantool_config_storage_*).
Примечание
Сценарий работает для кластера Tarantool 3.x с указанием переменной tarantool_3_0_version_support: true.
В сценарии резервирования архивируются рабочие директории экземпляров 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) 
 
Автоматическое восстановление¶
Изменено в версии 1.5.0: Добавлена возможность восстанавливать экземпляры из бэкапа, ближайшего к указанному времени с использованием переменной backup_time.
Изменено в версии 1.5.0: Добавлена поддержка версии Tarantool-3.x .
Примечание
Сценарий работает только на выключенном экземпляре.
Перед восстановлением запустите сценарий stop.yml.
После восстановления запустите сценарий start.yml.
Примечание
Сценарий работает для кластера Tarantool 3.x с указанием переменной tarantool_3_0_version_support: true.
Сценарий используется для восстановления из резервных копий, созданных с помощью 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}
Переключение лидера в наборах реплик¶
Примечание
Параметр 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/switch_leaders_to.yml --limit ${LIMIT}
Выбор лидера в наборах реплик¶
Важно
Может быть использован только в случае election replication.failover
Примечание
Параметр 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",
      "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
Ожидание работоспособности¶
Изменено в версии 1.3.0: Добавлена возможность игнорировать критические ошибки в кластере (allow_critical_issues).
Сценарий запрашивает произвольный экземпляр кластера о наличии 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).
Изменение cluster-cookie¶
docker run --network host -it --rm \
  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
  -e SUPER_USER_NAME=${SUPER_USER_NAME} \
  -e NEW_CARTRIDGE_CLUSTER_COOKIE=${NEW_CARTRIDGE_CLUSTER_COOKIE} \
  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
  ansible-playbook -i /ansible/inventories/hosts.yml \
  --extra-vars '{
      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
      "super_user":"'${SUPER_USER_NAME}'",
      "tarantool_shared_become_user":"tarantool",
      "new_cartridge_cluster_cookie":"'${NEW_CARTRIDGE_CLUSTER_COOKIE}'"
  }' \
  playbooks/change_cookie.yml
Обязательные переменные:
- new_cartridge_cluster_cookie (string) — новый секретный пароль кластера. 
Восстановление экземпляра¶
Сценарий используется для игнорирования ошибок при восстановлении из snapshot-
и WAL-файлов. Опцию нельзя оставлять включенной по умолчанию. Сценарий временно
устанавливает значение в true и возвращает обратно после запуска экземпляра.
Подробности про механизм восстановления см. в документации по Tarantool.
Примечание
Параметр LIMIT обязателен. Указывает, какие экземпляры Tarantool необходимо
запустить с опцией force_recovery = 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/force_recovery.yml --limit ${LIMIT}
Восстановление экземпляра Tarantool 3.x¶
Сценарий set_force_recovery_3x.yml включает переменную окружения TT_FORCE_RECOVERY=true через systemd override для указанных экземпляров Tarantool 3.x. Это позволяет запустить инстанс даже при повреждённых .snap файлах.
Также предусмотрена опциональная генерация snapshot и перезапуск в обычном режиме после восстановления.
docker run --network host -it --rm \
  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
  -e SUPER_USER_NAME=${SUPER_USER_NAME} \
  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
  ansible-playbook -i /ansible/inventories/hosts.yml \
  --extra-vars '{
      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
      "super_user":"'${SUPER_USER_NAME}'",
      "tarantool_shared_become_user":"tarantool",
      "tarantool_shared_hosts":"vm_1",
      "tarantool_snapshot":true
  }' \
  playbooks/set_force_recovery_3x.yml
Переменные:
- tarantool_shared_hosts (string или list) — список хостов или одиночное имя хоста, на которых будет выполняться сценарий. 
- tarantool_snapshot (boolean) — выполнять - box.snapshot()после запуска инстанса с- TT_FORCE_RECOVERY=true. Если включено, инстанс будет перезапущен в обычном режиме после создания snapshot.
 Значения:- true— создать snapshot и выполнить перезапуск
- false— не выполнять snapshot (по умолчанию)
 
Пересоздание экземпляра¶
Изменено в версии 1.10.2: Сценарий работает с продуктами на основе Tarantool 3.
Примечание
Параметр –limit обязателен.
Вариант 1: Продукты на основе Tarantool 3.x (TDB 2.x, TCS, TQE)¶
Сценарий используется для пересоздания экземпляра из мастера продуктов на основе Tarantool 3.x.
docker run --network host -it --rm \
  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
  -e SUPER_USER_NAME=${SUPER_USER_NAME} \
  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
  ansible-playbook -i /ansible/inventories/hosts.yml \
  --extra-vars '{
      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
      "super_user":"'${SUPER_USER_NAME}'",
      "tarantool_shared_become_user":"tarantool",
      "tarantool_3_0_version_support":true
  }' \
  playbooks/rebootstrap.yml --limit ${LIMIT}
Обязательные переменные:
- tarantool_3_0_version_support (bool) — поддержка Tarantool 3. Обязательное значение – - true.
Дополнительные переменные:
- tarantool_wait_alive_retries (integer) — количество повторных проверок доступности экземпляра Tarantool после рестарта. 
- tarantool_wait_alive_delay (integer) — время ожидания (в секундах) между проверками доступности экземпляра. 
Вариант 2: Приложения на основе Tarantool Cartridge¶
Вариант запуска в случае использования Tarantool Cartridge.
docker run --network host -it --rm \
  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
  -e SUPER_USER_NAME=${SUPER_USER_NAME} \
  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
  ansible-playbook -i /ansible/inventories/hosts.yml \
  --extra-vars '{
      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
      "super_user":"'${SUPER_USER_NAME}'",
      "tarantool_shared_become_user":"tarantool"
  }' \
  playbooks/rebootstrap.yml --limit ${LIMIT}
Изменение настроек кластера¶
Сценарий используется для изменения настроек экземпляров кластера.
docker run --network host -it --rm \
  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
  -e SUPER_USER_NAME=${SUPER_USER_NAME} \
  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
  ansible-playbook -i /ansible/inventories/hosts.yml \
  --extra-vars '{
      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
      "super_user":"'${SUPER_USER_NAME}'",
      "tarantool_shared_become_user":"tarantool"
  }' \
  playbooks/settings.yml --limit ${LIMIT}
Изменение настроек кластера в runtime¶
Сценарий используется только при аварийно-восстановительных работах, для целей тестирования и при разработке. Позволяет менять только динамические настройки: box.cfg() и cartridge.cfg().
docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    -e CLUSTER_NEW_SETTINGS=${CLUSTER_NEW_SETTINGS} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"tarantool",
        "cluster_new_settings":"'${CLUSTER_NEW_SETTINGS}'",
    }' \
    playbooks/runtime_settings.yml --limit ${LIMIT}
Обязательные переменные:
- cluster_new_settings (string) — перечень изменяемых настроек в строковом формате JSON. Например: - '{"memtx_memory":123456789}'.
Исключение экземпляра(ов) из кластера¶
Добавлено в версии 1.4.0.
Сценарий включает два варианта исключения экземпляров из кластера Tarantool:
- Исключение одного или нескольких экземпляров. 
- Исключение целого набора реплик. 
Запуск сценария в Docker для исключения одного/нескольких экземпляров
На исключаемых экземплярах в инвентаре добавляем expelled: true.
Пример конфигурации:
  hosts:
    kvee-r01-s01:
      config:
        advertise_uri: localhost:3401
        http_port: 8080
        log: /app/logs/kvee/kvee-r01-s01.log
        vinyl_cache: 0
        vinyl_memory: 0
      expelled: true
Запуск сценария исключения
docker run --network host -it --rm \
  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
  -e SUPER_USER_NAME=${SUPER_USER_NAME} \
  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
  ansible-playbook -i /ansible/inventories/hosts.yml \
  --extra-vars '{
      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
      "super_user":"'${SUPER_USER_NAME}'",
      "tarantool_shared_become_user":"tarantool",
  }' \
  playbooks/expel_instances.yml
Запуск сценария в Docker для исключения целого набора реплик
На исключаемом наборе в инвентаре добавляем weight: 0.
Пример конфигурации:
  replicaset_vag_storage_02:
    hosts:
      kvee-r02-s01:
      kvee-r02-s02:
    vars:
      failover_priority:
        - kvee-r02-s02
        - kvee-r02-s01
      replicaset_alias: vag-storage-02
      roles:
        - vshard-storage
        - crud-storage
        - metrics
        - expirationd
      weight: 0
Запуск сценария исключения
docker run --network host -it --rm \
  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
  -e SUPER_USER_NAME=${SUPER_USER_NAME} \
  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
  ansible-playbook -i /ansible/inventories/hosts.yml \
  --extra-vars '{
      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
      "super_user":"'${SUPER_USER_NAME}'",
      "tarantool_shared_become_user":"tarantool",
  }' \
  playbooks/expel_instances.yml
Важно
При исключении набора реплик целиком обязательно дождитесь, пока все данные перетекут в другие наборы. Это можно наблюдать в web-интерфейсе кластера.
Добавьте параметр expelled: true для исключаемого набора реплик.
Пример конфигурации:
  replicaset_vag_storage_02:
    hosts:
      kvee-r02-s01:
      kvee-r02-s02:
    vars:
      failover_priority:
        - kvee-r02-s02
        - kvee-r02-s01
      replicaset_alias: vag-storage-02
      roles:
        - vshard-storage
        - crud-storage
        - metrics
        - expirationd
      weight: 0
      expelled: true
Запуск сценария исключения
docker run --network host -it --rm \
  -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
  -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
  -e SUPER_USER_NAME=${SUPER_USER_NAME} \
  ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
  ansible-playbook -i /ansible/inventories/hosts.yml \
  --extra-vars '{
      "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
      "super_user":"'${SUPER_USER_NAME}'",
      "tarantool_shared_become_user":"tarantool",
  }' \
  playbooks/expel_instances.yml
Примечание
После выполнение сценария рекомендуется проверить работоспособность кластера с помощью сценария check_is_healthy.yml.
Управление пользователями Tarantool¶
Добавлено в версии 1.3.0.
Сценарий предназначен для управления пользователями в 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.yml- tarantool_users: - name: tarantool_user_1 password: Password123 - name: tarantool_user_2 state: absent - name: tarantool_user_3 grant: - permissions: "read,create" object_type: space object_name: _user - permissions: "read,create,execute" object_type: space object_name: _user 
Пример запуска сценария в Docker с использованием файла tarantool_users_example.yml
- PATH_TO_TARANTOOL_USERS — путь к файлу с пользователями, в котором содержится переменная - tarantool_users.- docker run --network host -it --rm \ -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \ -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \ -v ${PATH_TO_TARANTOOL_USERS}:/ansible/tarantool_users_example.yml:Z \ -e SUPER_USER_NAME=${SUPER_USER_NAME} \ ansible-playbook -i /ansible/inventories/hosts.yml \ --extra-vars '{ "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key", "super_user":"'${SUPER_USER_NAME}'", "tarantool_shared_become_user":"tarantool", "tarantool_users_file_path":"/ansible/tarantool_users_example.yml" }' \ playbooks/manage_tarantool_users.yml 
Пример запуска сценария в Docker с использованием --extra-vars
docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars  '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"tarantool",
        "tarantool_users": [
            {
                "name": "tarantool_user_1",
                "password": "Password123",
                "state": "present"
            },
            {
                "name": "tarantool_user_2",
                "state": "absent"
            },
            {
                "name": "tarantool_user_3",
                "state": "present",
                "grant": [
                    {
                        "permissions": "read,create",
                        "object_type": "space",
                        "object_name": "_user"
                    },
                    {
                        "permissions": "read,create,execute",
                        "object_type": "space",
                        "object_name": "_user"
                    }
                ]
            }
        ]
    }' \
    playbooks/manage_tarantool_users.yml
Пример запуска сценария в Docker с использованием зашифрованного файла tarantool_users_example.yml
Чтобы сохранить конфиденциальные данные, можно использовать инструмент шифрования Ansible Vault.
- Зашифруйте файл: - 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 Enterprise¶
Сценарий используется для изменения паролей пользователей Tarantool (задаются через box.schema.user).
Пользователь должен существовать. Создание пользователя и назначение ему прав рекомендуется делать через сценарий управления пользователями Tarantool.
docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    -e NEW_USERS_CREDENTIALS=${NEW_USERS_CREDENTIALS} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"tarantool",
        "new_users_credentials":"'${NEW_USERS_CREDENTIALS}'",
    }' \
    playbooks/change_credentials.yml
Обязательные переменные:
- new_users_credentials (string) — JSON с новыми паролями пользователей. Например: - '{"username":"new-secret"}'.
Сбор логов экземпляров Tarantool, TCF, TQE API¶
Добавлено в версии 1.6.0.
Этот сценарий используется для сбора логов экземпляров Tarantool, TCF, TQE API с удаленных хостов и сохранения их на локальной машине.
docker run --network host -it --rm \
    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \
    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \
    -e TARANTOOL_COLLECTED_LOGS_LOCAL_PATH=${TARANTOOL_COLLECTED_LOGS_LOCAL_PATH} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars '{
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "tarantool_collected_logs_local_path":"'${TARANTOOL_COLLECTED_LOGS_LOCAL_PATH}'",
    }' \
    playbooks/collect_logs.yml
Обязательные переменные:
- tarantool_collected_logs_local_path (string) — Путь на локальной машине, где будут сохранены собранные логи. Например: - '/path/to/local/logs'.
Описание сценария:
- Создание директории для логов на локальной машине: - Проверяет наличие указанной директории на локальной машине и создает её, если она отсутствует. 
- Путь к директории указывается в переменной - tarantool_collected_logs_local_path.
 
- Сбор логов экземпляров на локальный хост: - Сохраняет логи экземпляров с удаленных хостов в указанную директорию на локальной машине. 
- Логи собираются из путей, указанных в переменных продукта и сохраняются в директорию - tarantool_collected_logs_local_path.
 
Применение миграций с помощью tt CLI¶
Добавлено в версии 1.7.0.
Добавлено в версии 1.10.0: Добавлена возможность применять миграции для кластера на базе Tarantool Config Storage. Для этого в качестве tt_etcd_host укажите хост Tarantool Config Storage, в качестве tt_etcd_port - порт, на котором слушает Tarantool Config Storage, а в качестве tt_etcd_prefix - префикс Tarantool Config Storage (указанный в инвентаре как tarantool_config_storage_prefix). Параметры подключения можно указать либо через переменные tarantool_config_storage_username и tarantool_config_storage_password, либо передав строку подключения в переменной tt_etcd_host (login:password@url).
Сценарий используется для публикации и применения миграций для 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для применения опубликованных миграций на удаленном хосте, используя учетные данные и параметры подключения.
 
Первоначальная настройка VShard с помощью tt CLI¶
Примечание
В параметре LIMIT обязательно укажите, на каких экземплярах Tarantool необходимо выполнить команду. Обычно это группа хостов роутеров (например, "router") или конкретный роутер из этой группы. Убедитесь, что выбранный роутер имеет указанное значение iproto.advertise.client.
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¶
Добавлено в версии 1.4.0.
Этот сценарий используется для полного удаления кластера Tarantool. Он останавливает все экземпляры, очищает каталоги и удаляет все данные, включая конфигурации ротации логов.
Примечание
Сценарий работает для кластера Tarantool 3.x с указанием переменной tarantool_3_0_version_support: 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/uninstall.yml
Описание сценария¶
- Подтверждение удаления кластера: - Задача выводит запрос для подтверждения операции, информируя о том, что будут удалены все данные. Принимает ввод - yesили- noдля продолжения или отмены операции.
 
- Удаление компонентов Tarantool: - Импортирует роль - tarantool.enterprise.uninstall, которая удаляет все компоненты Tarantool на удаленных хостах. Для кластера Tarantool 3.x следует указать- tarantool_3_0_version_support: true.
 
- Остановка и отключение служб systemd: - Останавливает и отключает все службы systemd Tarantool через роль - tarantool.enterprise.systemd, чтобы гарантировать полное удаление экземпляров.
 
- Удаление директорий кластера: - Удаляет все директории, связанные с 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
Добавление и удаление пользовательских файлов¶
Добавлено в версии 1.12.0: Добавлен плейбук copy_custom_file.yml
Этот сценарий используется для доставки пользовательских файлов на хосты, а также удаления этих файлов. Примеры файлов:
- контекстный файл конфигурации; 
- 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",
      }'