Выполнение Lua-кода
Плейбуки для выполнения произвольного Lua-кода на экземплярах Tarantool и обновления схемы данных.
Плейбук для выполнения произвольного Lua-кода на управляющем экземпляре кластера. В отличие от eval_3_0.yml, код выполняется один раз для всего кластера, а не на каждом целевом экземпляре.
Код передаётся через переменную cluster_ops_eval_body или файл cluster_ops_eval_file.
Переменная | Описание |
|---|---|
| Lua-код для выполнения на управляющем экземпляре. |
| Путь к файлу с Lua-кодом. Альтернатива |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/eval.yml
Плейбук для выполнения произвольного Lua-кода на целевых экземплярах Tarantool.
Код передаётся через переменную 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}
Плейбук для обновления схемы данных на целевых экземплярах. Сначала импортирует плейбук 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}
Плейбук для обновления схемы данных на целевых наборах реплик с созданием снимков состояния. В отличие от eval_schema_update.yml, обновление выполняется по наборам реплик: сначала на мастере, затем — после догонания реплик по LSN — на репликах.
Плейбук выбирает все экземпляры наборов реплик, которым принадлежат целевые хосты, и для каждого набора выполняет:
- Проверку, что в наборе реплик ровно один экземпляр в режиме чтения-записи.
- На мастере —
box.schema.upgrade()и снимок состояния (box.snapshot()). - На репликах — ожидание догонания по LSN до мастера, затем снимок состояния.
Переменная | Описание |
|---|---|
| Хосты, по которым определяются целевые наборы реплик: в обновление попадают все экземпляры наборов, которым принадлежат эти хосты. Переменную необходимо задать: без неё целевые наборы реплик не выбираются, и обновление выполняется на пустой группе хостов. |
| Таймаут ожидания догонания реплики по LSN в секундах. Значение по умолчанию: |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/schema_upgrade.yml