VK Docs logo
Помощь
Обновлена 12 декабря 2025 г. в 10:16

Использование динамического инвентаря

В этом руководстве описано, как создать файл динамического инвентаря с использованием плагина tarantool.enterprise.generator. В файле динамического инвентаря для плагина задаются параметры кластера Tarantool или продуктов на его основе, серверов, а также компонентов кластера. Плагин входит в поставку Ansible Tarantool Enterprise. Чтобы использовать данный плагин вне коллекции АТЕ, включите его в файле конфигурации Ansible (файл ansible.cfg):

[inventory]enable_plugins = tarantool.enterprise.generator

Структура динамического инвентаря

Файл динамического инвентаря написан в формате YAML и состоит из нескольких основных секций:

  • plugin: название используемого инвентарного плагина;
  • cluster_name: имя кластера;
  • product: название продукта -- например tarantool, TCS, TCF, TQE, cartridge;
  • constants: глобальные переменные и настройки;
  • servers: список серверов и их параметры;
  • components: список компонентов кластера и их параметры;
  • changes: список изменений для кластера.

Конфигурационные поля

  • plugin: плагин, используемый для генерации инвентаря (tarantool.enterprise.generator).
  • cluster_name: имя кластера, которое будет использоваться как родительская группа для всех сгенерированных хостов.
  • product: название продукта. Возможные значения: tarantool, TCS, TCF, TQE, cartridge. Для генерации инвентаря для Tarantool DB укажите tarantool в качестве названия продукта.

Глобальные переменные

Секция constants содержит глобальные переменные, применяемые ко всем хостам. Для Tarantool 3.x здесь указывается переменная tarantool_config_global. Некоторые переменные можно посмотреть в соответствующем разделе документации.

Физические серверы и виртуальные машины

Секция servers содержит список физических серверов и виртуальных машин, на которых будут распределены компоненты кластера. Каждый сервер содержит данные поля:

  • name (опционально): имя сервера. Значение по умолчанию: экранированное поле host;
  • host: хост сервера;
  • advertise_host (опционально): адрес для advertise_uri. Значение по умолчанию: host;
  • port (опционально): порт для подключения к серверу. Значение по умолчанию: 22;
  • user: пользователь для подключения к серверу;
  • zone (опционально): зона, к которой относится сервер;
  • port_starts (опционально): стартовые порты для генерации. Значение по умолчанию: "iproto": 3301, "http": 8081.

Компоненты кластера

Секция components описывает компоненты кластера, их конфигурацию, а также количество наборов реплик и экземпляров в них:

  • name: имя компонента;
  • replicasets: количество наборов реплик;
  • replicas: количество узлов в каждом наборе реплик;
  • config: конфигурация компонента.

Список изменений для кластера

Секция changes содержит список изменений, которые будут применены после создания топологии кластера. Возможные типы изменений:

  • set_variables: задаёт переменные для экземпляров;
  • remove_instances: удаляет экземпляр из кластера.
changes:  - type: set_variables # тип изменения    hosts: # Хост или группа хостов      - kvee-app-r001-s01      - ROUTERS    values: # Переменные, задаваемые для узлов      expelled: true      config:        http_port: 101010301        vinyl_cache: 1        vinyl_memory: 2  - type: remove_instances    hosts:      - kvee-app-r001-s01      - kvee-app-r002-s02

Пример инвентаря

Пошаговое руководство по созданию инвентаря

Шаг 1: Укажите используемый плагин

В начале инвентаря добавьте строку с подключением плагина динамического инвентаря ATE:

plugin: tarantool.enterprise.generator

Шаг 2: Укажите имя кластера и продукт

Придумайте имя кластера Tarantool, а затем укажите желаемый продукт -- tarantool, TCS, TCF, TQE или cartridge:

cluster_name: my_cluster_nameproduct: tarantool

Шаг 3: Определите глобальные переменные

В секции constants укажите глобальные переменные, которые будут применяться ко всем хостам:

constants:  cartridge_app_name: my_app_name  tarantool_etcd_host: "{{ tarantool_etcd_host }}"  tarantool_config_global:    credentials:      users:        client:          password: 'secret'          roles: [super]        replicator:          password: 'secret'          roles: [replication]        storage:          password: 'secret'          roles: [sharding]    roles_cfg:      my-role:        variable_1: 10    iproto:      advertise:        peer:          login: replicator        sharding:          login: storage        client: 'unix/:{{ cartridge_run_dir }}/{% raw %}{{ instance_name }}{% endraw %}.iproto'      listen:        - uri: unix/:/app/tarantool/kvee/run/{% raw %}{{ instance_name }}{% endraw %}.iproto

Шаг 4: Определите серверы

В секции servers укажите список серверов и их параметры:

servers:  - name: 'vm_1'    host: '{{ tarantool_ansible_host }}'    user: '{{ super_user }}'  - name: 'vm_2'    host: '{{ tarantool_ansible_host }}'    advertise_host: '127.0.0.1'    port: 2201    zone: 'DC5'    user: '{{ super_user }}'    port_starts:      iproto: 3401      http: 9091

Шаг 5: Определите компоненты

В секции components укажите компоненты кластера, их конфигурацию, количество наборов реплик и узлов в каждом из них:

components:  - name: storage    replicasets: 2    replicas: 2    config:      replicaset:        memtx:          memory: 512000000      group:        app:          module: storage          cfg:            space_name: super-duper-space        sharding:          roles: [storage]        memtx:          memory: 1000241024        roles:          - roles.my-role  - name: router    replicasets: 2    replicas: 1    config:      replicaset:      group:        app:          module: router        sharding:          roles: [router]        roles:          - roles.another-role

Конфигурация Tarantool и продуктов на его основе

Конфигурация кластера Tarantool 3.x

Tarantool 3.x позволяет задавать параметры конфигурации на различных уровнях (scope) — например для всех узлов кластера или отдельного набора реплик. Вы можете задать конфигурацию для группы и набора реплик в секции config.

Конфигурация кластера Tarantool Column Store

TCS имеет обязательные компоненты scheduler (для TCS 0.x) и coordinator, а также компонент storage, который может иметь произвольное имя.

Для установки TCS версии 1.x укажите переменную tcs_v1_support: true и заполните инвентарь в соответствии с документацией TCS (без компонента scheduler).

Конфигурация кластера Tarantool Cartridge

Конфигурация Tarantool Clusters Federation

В инвентаре TCF есть три обязательные секции:

  • tcf - переменные для компонентов Gateway и Destination;
  • cluster_1 и cluster_2 - описание первого и второго кластера;

В этой верcии генератора на основе инвентаря создаётся топология TCF c двумя экземплярами Gateway и двумя экземплярами Destination.

Конфигурация кластера Tarantool Queue Enterprise

TQE имеет обязательный компонент, который должен содержать строку grpc_server (например grpc_server_consumer, grpc_server_producer). У компонента, содержащего строку grpc_server, достаточно указать словарь очередей для публикации и подписки - это можно сделать в секции инвентаря producer/consumer для задания очередей. Генератор автоматически заполнит секцию advertise_uri для экземпляров хранилища и роутера соответственно. Если требуется задать свои собственные параметры подключения, их можно указать в поле connections.

Дополнительные команды

Чтобы посмотреть топологию, используйте следующую команду:

ansible-inventory -i path/to/config.yml --graph

Чтобы посмотреть переменные у хостов, вызовите команду ниже:

ansible-inventory -i path/to/config.yml --list