Использование Ansible-коллекции
Установите инсталлятор:
-
Скачайте архив с коллекцией из личного кабинета на сайте
tarantool.ioили используйте архив, полученный напрямую от доверенного лица. Архив с коллекцией имеет видtarantool-enterprise-${VERSION}.tar.gz, где${VERSION}-- нужная версия инсталлятора ATE. -
Установите коллекцию с помощью
ansible-galaxy:ansible-galaxy collection install --force tarantool-enterprise-${VERSION}.tar.gz
Роль tarantool.enterprise.os_configure выполняет следующие функции:
- определяет, поддерживается ли текущая операционная система;
- создает
systemdunit-файлы в домашней директории пользователяtarantool.
Ansible Tarantool Enterprise не использует механизм gather_facts по умолчанию, поэтому многие сценарии начинаются с задачи find_os.yml для определения операционной системы.
Добавьте вызов роли tarantool.enterprise.os_configure перед использованием других ролей из Ansible Tarantool Enterprise.
- ansible.builtin.import_role:name: tarantool.enterprise.os_configuretasks_from: find_os.yml
Запуск роли целиком (main.yml) создаст unit-файлы.
- ansible.builtin.import_role:name: tarantool.enterprise.os_configure
Есть специальный набор переменных, которые регулируют, каким образом запускаются сценарии:
- tarantool_shared_become_user – выставляет значение переменной
ansible_become_user. По умолчанию –tarantool. - tarantool_shared_become_method – выставляет значение переменной
ansible_become_method. По умолчанию –sudo. - tarantool_shared_become – выставляет значение параметра
becomeв сценариях. По умолчанию –true. - tarantool_shared_hosts – выставляет значение параметра
hostsв сценариях. В большинстве сценариев значением по умолчанию являетсяall. Исключением являются сценарии для TCF.
Вы можете управлять tarantool_shared_hosts для создания сложных сценариев с использованием уже существующих сценариев из коллекции Ansible Tarantool Enterprise.
Предположим, у вас в инвентаре есть группы ACTIVE и RESERVE, которые состоят из активных и резервных экземпляров Tarantool соответственно.
Сложный сценарий поэтапного обновления с переключением лидеров (обновление с перезапуском экземпляров) можно сделать так:
- name: Switch leaders to RESERVE datacenteransible.builtin.import_playbook: tarantool.enterprise.switch_leadervars:tarantool_shared_hosts: "RESERVE"- name: Update ACTIVE datacenteransible.builtin.import_playbook: tarantool.enterprise.updatevars:tarantool_shared_hosts: "ACTIVE"- name: Wait for cluster to become healthyansible.builtin.import_playbook: tarantool.enterprise.checkvars:tarantool_shared_hosts: "all"- name: Return leaders to ACTIVE datacenteransible.builtin.import_playbook: tarantool.enterprise.switch_leadervars:tarantool_shared_hosts: "ACTIVE"- name: Update RESERVE datacenteransible.builtin.import_playbook: tarantool.enterprise.updatevars:tarantool_shared_hosts: "RESERVE"- name: Wait for cluster to become healthyansible.builtin.import_playbook: tarantool.enterprise.checkvars:tarantool_shared_hosts: "all"
Для шардированного кластера TCS 1.x часть состояния (конфигурация и данные шардирования) хранится в ETCD. Обычный механизм tarantool.enterprise.backup/tarantool.enterprise.restore не восстанавливает эту часть состояния корректно, так как ETCD использует механизм ревизий (revision), который теряется при простом сохранении/восстановлении данных по префиксу.
Для TCS предусмотрены отдельные плейбуки playbooks/tcs/backup.yml и playbooks/tcs/restore.yml, которые дополнительно сохраняют и восстанавливают состояние ETCD целиком с помощью механизма сохранения снимков (etcdctl snapshot save / etcdutl snapshot restore). Это сохраняет точную историю ревизии ETCD, в отличие от восстановления по отдельным ключам.
Список всех переменных с описанием и значениями по умолчанию см. в разделе Сохранение и восстановление данных кластера TCS.
ansible-playbook playbooks/tcs/backup.yml -i <inventory>
Плейбук выполняет:
- Стандартное создание резервной копии данных Tarantool через
tarantool.enterprise.backup(на хостах storages/schedulers). - Сохранение снимка ETCD (
etcdctl snapshot save) происходит на одном из ETCD хостов. Согласно официальной документации etcd, для восстановления кластера достаточно одного снимка, все члены восстанавливаются из одного и того же файла. - Копирование снимка на управляющий узел (машину, откуда запущен
ansible-playbook) для последующего использования при восстановлении.
ansible-playbook playbooks/tcs/restore.yml -i <inventory> \-e tcs_confirm_restore=true
Плейбук выполняет:
- Остановку кластера TCS.
- Остановку ETCD на всех хостах.
- Раздачу снимка ETCD с управляющего узла на все ETCD-хосты.
- Восстановление ETCD из снимка (
etcdutl snapshot restore) на каждом хосте синхронно. - Запуск ETCD и ожидание готовности кластера.
- Восстановление данных Tarantool через
tarantool.enterprise.restore. - Запуск кластера TCS.
- Проверку здоровья ETCD-кластера.