Использование Ansible-коллекции | Ansible_Cartridge

Version:

latest
Использование Ansible-коллекции

Использование Ansible-коллекции

Установите инсталлятор:

  1. Скачайте архив с коллекцией из личного кабинета на сайте tarantool.io или используйте архив, полученный напрямую от доверенного лица. Архив с коллекцией имеет вид tarantool-enterprise-${VERSION}.tar.gz, где ${VERSION} – нужная версия инсталлятора ATE.

  2. Установите коллекцию с помощью ansible-galaxy:

    ansible-galaxy collection install --force tarantool-enterprise-${VERSION}.tar.gz
    

Важно

При использовании плейбуков из коллекции необходимо указать переменную cartridge_custom_steps_dir. Значение должно указывать на директорию playbooks/custom_steps в вашем окружении.

Можно воспользоваться небольшой хитростью и указать переменную вот так {{ playbook_dir }}/custom_steps.

Роль tarantool.enterprise.os_configure

Роль tarantool.enterprise.os_configure выполняет следующие функции:

  • определяет, поддерживается ли текущая операционная система;

  • создает systemd unit-файлы в домашней директории пользователя tarantool.

Важно

Кроме запуска роли os_configure, которая описана в данном разделе, необходима предварительная настройка серверов. Вы можете выполнить настройку самостоятельно при наличии root-доступа для ansible. Если root-доступ для ansible не предоставляется, обратитесь в техподдержку за инструкциями.

Ansible Tarantool Enterprise не использует механизм gather_facts по умолчанию, поэтому многие сценарии начинаются с задачи find_os.yml для определения операционной системы. Добавьте вызов роли tarantool.enterprise.os_configure перед использованием других ролей из Ansible Tarantool Enterprise.

- ansible.builtin.import_role:
    name: tarantool.enterprise.os_configure
    tasks_from: find_os.yml

Запуск роли целиком (main.yml) создаст unit-файлы.

- ansible.builtin.import_role:
    name: tarantool.enterprise.os_configure

Примечание

Если запрещено использовать userspace, то активируйте запуск из-под sudo. Для этого:

  1. Создайте unit-файлы в /etc/systemd/system.

  2. Через extra vars передайте параметр -e tarantool_systemd_userspace_supported_os=[].

Управление сервисами будет происходить с помощью команд sudo systemctl start/stop/restart.

Роль tarantool.enterprise.cartridge

Эта роль нужна для работы с приложениями на Tarantool Cartridge.

Ей соответствует полностью вшитая open-source роль tarantool.cartridge. Документация доступна на GitHub.

Особенности использования в составе коллекции:

  • Необходимо корректно указать путь до директории custom_steps/ в переменной cartridge_custom_steps_dir.

  • Переменная cartridge_scenario должна быть объявлена и иметь тип List. Можно использовать переменную cartridge_scenario_name, чтобы указать исполняемую последовательность по умолчанию. В таком случае указывать cartridge_scenario нужно только при желании изменить стандартное исполнение.

Параметры become_* и hosts в сценариях

Есть специальный набор переменных, которые регулируют, каким образом запускаются сценарии:

  • 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 datacenter
  ansible.builtin.import_playbook: tarantool.enterprise.switch_leaders_to
  vars:
    tarantool_shared_hosts: "RESERVE"

- name: Update ACTIVE datacenter
  ansible.builtin.import_playbook: tarantool.enterprise.update_internal
  vars:
    tarantool_shared_hosts: "ACTIVE"

- name: Wait for cluster to become healthy
  ansible.builtin.import_playbook: tarantool.enterprise.wait_is_healthy
  vars:
    tarantool_shared_hosts: "all"

- name: Return leaders to ACTIVE datacenter
  ansible.builtin.import_playbook: tarantool.enterprise.switch_leaders_to
  vars:
    tarantool_shared_hosts: "ACTIVE"

- name: Update RESERVE datacenter
  ansible.builtin.import_playbook: tarantool.enterprise.update_internal
  vars:
    tarantool_shared_hosts: "RESERVE"

- name: Wait for cluster to become healthy
  ansible.builtin.import_playbook: tarantool.enterprise.wait_is_healthy
  vars:
    tarantool_shared_hosts: "all"

Аналогичный механизм реализован в сценарии tarantool.enterprise.update_2x из коллекции Ansible Tarantool Enterprise.

Found what you were looking for?
Feedback