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

Выполнение Lua-кода

Плейбуки для выполнения произвольного Lua-кода на экземплярах Tarantool и обновления схемы данных.

eval.yml

Плейбук для выполнения произвольного Lua-кода на управляющем экземпляре кластера. В отличие от eval_3_0.yml, код выполняется один раз для всего кластера, а не на каждом целевом экземпляре.

Код передаётся через переменную cluster_ops_eval_body или файл cluster_ops_eval_file.

Переменные

Переменная

Описание

cluster_ops_eval_body

Lua-код для выполнения на управляющем экземпляре.

cluster_ops_eval_file

Путь к файлу с Lua-кодом. Альтернатива cluster_ops_eval_body.

Примеры

Запуск через коллекцию:

ansible-playbook -i ${PATH_TO_INVENTORY} \    --user ${SUPER_USER_NAME} \    -e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \    playbooks/eval.yml

eval_3_0.yml

Плейбук для выполнения произвольного Lua-кода на целевых экземплярах Tarantool.

Код передаётся через переменную tarantool_eval_body и выполняется через консольный сокет каждого целевого экземпляра. Если переменная не задана, плейбук завершится с ошибкой.

Переменные

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

Переменная

Описание

tarantool_eval_body

Lua-код для выполнения на экземплярах.

Примеры

Запуск через коллекцию:

ansible-playbook -i ${PATH_TO_INVENTORY} \    --user ${SUPER_USER_NAME} \    -e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \    -e tarantool_eval_body='return box.info.status' \    playbooks/eval_3_0.yml --limit ${LIMIT}

Запуск через Docker-образ инсталлятора:

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_eval_body":"return box.info.status"        }' \        playbooks/eval_3_0.yml --limit ${LIMIT}

eval_schema_update.yml

Плейбук для обновления схемы данных на целевых экземплярах. Сначала импортирует плейбук schema_upgrade.yml, который выполняет обновление по наборам реплик: на мастере — box.schema.upgrade(), затем ожидание догонания реплик по LSN и снимки состояния. После этого выполняет box.schema.upgrade() через консольный сокет каждого целевого экземпляра и проверяет, что вызов завершился без ошибок.

Примеры

Запуск через коллекцию:

ansible-playbook -i ${PATH_TO_INVENTORY} \    --user ${SUPER_USER_NAME} \    -e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \    playbooks/eval_schema_update.yml --limit ${LIMIT}

Запуск через Docker-образ инсталлятора:

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}'"        }' \        playbooks/eval_schema_update.yml --limit ${LIMIT}

schema_upgrade.yml

Плейбук для обновления схемы данных на целевых наборах реплик с созданием снимков состояния. В отличие от eval_schema_update.yml, обновление выполняется по наборам реплик: сначала на мастере, затем — после догонания реплик по LSN — на репликах.

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

  1. Проверку, что в наборе реплик ровно один экземпляр в режиме чтения-записи.
  2. На мастере — box.schema.upgrade() и снимок состояния (box.snapshot()).
  3. На репликах — ожидание догонания по LSN до мастера, затем снимок состояния.

Переменные

Переменная

Описание

tarantool_shared_hosts

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

tt_schema_upgrade_lsn_timeout

Таймаут ожидания догонания реплики по LSN в секундах. Значение по умолчанию: 60.

Примеры

Запуск через коллекцию:

ansible-playbook -i ${PATH_TO_INVENTORY} \    --user ${SUPER_USER_NAME} \    -e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \    playbooks/schema_upgrade.yml
Была ли статья полезна?