Обновление версии YDB на кластерах, развёрнутых с помощью Ansible

Во время начального развёртывания Ansible playbook предоставляет на выбор несколько вариантов, какой именно серверный исполняемый файл YDB (ydbd) использовать. В этой статье объясняются доступные варианты изменения версии кластера после начального развёртывания.

Обновление исполняемых файлов через Ansible playbook

Репозиторий ydb-ansible содержит playbook под названием ydb_platform.ydb.update_executable, который можно использовать для обновления или понижения версии кластера YDB. Перейдите в ту же директорию, которая использовалась для начального развёртывания, отредактируйте файл inventory/50-inventory.yaml, чтобы указать целевую версию YDB для установки (обычно через переменные ydb_version или ydb_git_version), а затем выполните этот playbook:

ansible-playbook ydb_platform.ydb.update_executable

Playbook получает новый бинарный файл и затем разворачивает его на кластере с помощью кросс-серверного копирования Ansible. После этого он выполняет постепенную перезагрузку кластера.

Фильтрация по типу узла

Задачи в playbook ydb_platform.ydb.update_executable помечены типами узлов, поэтому можно использовать функциональность тегов Ansible для фильтрации узлов по их типу.

Эти две команды эквивалентны и изменят конфигурацию всех узлов хранения:

ansible-playbook ydb_platform.ydb.update_executable --tags storage
ansible-playbook ydb_platform.ydb.update_executable --tags static

Эти две команды эквивалентны и изменят конфигурацию всех узлов баз данных:

ansible-playbook ydb_platform.ydb.update_executable --tags database
ansible-playbook ydb_platform.ydb.update_executable --tags dynamic

Пропуск перезагрузки

Существует тег no_restart, чтобы только развернуть исполняемые файлы, а перезагрузку кластера пропустить. Это может быть полезно, если кластер будет перезагружен позже вручную или в рамках других задач по обслуживанию. Пример запуска:

ansible-playbook ydb_platform.ydb.update_executable --tags no_restart