Описание инвентаря

Описание инвентаря#

Чтобы задать параметры развертывания платформы Astra Automation, заполните инвентарь установщика. Это обычный инвентарь Ansible в формате INI или YAML. В зависимости от используемого формата файл должен иметь одно из указанных расширений:

  • INI:

    • .ini;

    • .cfg;

  • YAML:

    • .yml;

    • .yaml.

Примечание

Если расширение не указано, файл интерпретируется как имеющий формат INI.

Утилита aa-setup по умолчанию использует файл инвентаря inventory в формате INI, расположенный в одном из следующих каталогов:

  • /opt/rbta/aa/astra-automation-setup/ – при использовании интернет-репозиториев ПАО Группа Астра;

  • в корневом каталоге распакованного архива – при использовании оффлайн-установщика.

Чтобы использовать другой файл инвентаря, при запуске утилиты aa-setup укажите путь к нему в значении аргумента --inventory (-i), например:

sudo ./aa-setup --inventory /var/aa/setup-settings.yaml

При заполнении инвентаря рекомендуется указывать полные пути к файлам и каталогам. Относительные пути рассчитываются по отношению к каталогу, в котором находится файл инвентаря.

Компоненты платформы

Настройки отдельных компонентов платформы задаются в соответствующих секциях:

INI

YAML

Описание

[automationcontroller]

automationcontroller.hosts

Узлы плоскости управления

[execution_nodes]

execution_nodes.hosts

Узлы плоскости исполнения

[automationhub]

automationhub.hosts

Узлы Private Automation Hub

[automationedacontroller]

automationedacontroller.hosts

Узлы контроллера Event-Driven Ansible

[database]

database.hosts

Узел СУБД, развертываемой средствами платформы

[all:vars]

all.vars

Параметры, общие для всех узлов, а также различные настройки платформы

Выберите подходящую конфигурацию платформы и укажите параметры узлов в инвентаре.

Внимание

Использование одного узла для развертывания двух и более компонентов платформы не допускается.

Реквизиты доступа к узлам

С целью сокращения в примерах опущены параметры, в которых задаются реквизиты для подключения к узлам:

  • ansible_user – название учетной записи пользователя, используемой для подключения к узлу;

  • ansible_ssh_private_key_file – путь к файлу приватного ключа SSH.

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

[automationcontroller]
node1.example.com
node2.example.com

[all:vars]
ansible_user='administrator'
ansible_ssh_private_key_file='./ssh-keys/ssh_key'
---
automationcontroller:
  hosts:
    node1.example.com:
    node2.example.com:
  vars:
    ansible_user: administrator
    ansible_ssh_private_key_file: ./ssh-keys/ssh_key

Если реквизиты для доступа к узлам различаются, укажите их в параметрах соответствующих узлов, например:

[automationcontroller]
node1.example.com  ansible_user=alex  ansible_ssh_private_key_file=./ssh-keys/node1_key
node2.example.com  ansible_user=john  ansible_ssh_private_key_file=./ssh-keys/node2_key

[execution_nodes]
node3.example.com  ansible_user=jack  ansible_ssh_private_key_file=./ssh-keys/node3_key
---
automationcontroller:
  hosts:
    node1.example.com:
      ansible_user: alex
      ansible_ssh_private_key_file: ./ssh-keys/node1_key
    node2.example.com:
      ansible_user: john
      ansible_ssh_private_key_file: ./ssh-keys/node2_key
execution_nodes:
  hosts:
    node3.example.com:
      ansible_user: jack
      ansible_ssh_private_key_file: ./ssh-keys/node3_key

Главный узел

При развертывании платформы данные о ее узлах указываются в инвентаре установщика. При первом запуске установщика узел, указанный первым в группе automationcontroller, становится главным узлом (primary node).

К главном узлу предъявляются следующие требования:

  • При развертывании или обновлении контроллера главный узел всегда должен быть доступен.

  • Запись о главном узле в инвентаре установщика должна размещаться на первой позиции в группе automationcontroller.

Защита конфиденциальных данных с помощью Ansible Vault

Для защиты указанных в инвентаре установщика конфиденциальных данных рекомендуется вынести их в отдельный файл и зашифровать с помощью утилиты ansible-vault.

Преимущества такого подхода:

  • Конфиденциальные данные не хранятся в открытом виде. Зашифрованный файл можно безопасно хранить и передавать.

  • Основной файл инвентаря установщика можно добавить в систему управления версиями. Поскольку он не содержит конфиденциальных данных, это исключает риск их компрометации.

  • Конфиденциальные данные обновляются отдельно от основной конфигурации.

Чтобы защитить конфиденциальные данные, выполните следующие действия:

  1. Установите пакет ansible:

    sudo apt install ansible --yes
    
  2. В каталоге установщика создайте файл формата YAML и добавьте в него необходимые переменные. В их значениях укажите конфиденциальные данные в открытом виде.

    В этом примере файл с конфиденциальными данными называется secrets.yml.

    Пример содержимого secrets.yml#
    ---
    ac_username: superadmin
    ac_password: p@ssW0rD!
    postgresql_ac_username: user3532
    posrgresql_ac_password: pgPa5Sw0r0
    postgresql_pah_username: user9853
    postgresql_pah_password: s$949d9fK
    
  3. Зашифруйте файл secrets.yml:

    sudo ansible-vault encrypt secrets.yml
    
  4. Введите пароль для защиты содержимого файла secrets.yml.

  5. В описании инвентаря вместо конфиденциальных данных укажите названия соответствующих переменных из файла secrets.yml. Для доступа к значениям переменных используйте синтаксис шаблонов Jinja.

    Для примера выше:

    ---
    # ...
    all:
      vars:
        admin_username: "{{ ac_username }}"
        admin_password: "{{ ac_password }}"
        # ...
        pg_username: "{{ postgresql_ac_username }}"
        pg_password: "{{ postgresql_ac_password }}"
        # ...
        automationhub_pg_username: "{{ postgresql_pah_username }}"
        automationhub_pg_password: "{{ postgresql_pah_password }}"
    
  6. В аргументы запуска утилиты aa-setup добавьте ключи --extra-vars и --ask-vault-pass, например:

    sudo ./aa-setup -- --extra-vars @secrets.yml --ask-vault-pass
    

    Примечание

    Символ @ перед названием файла secrets.yml является частью синтаксиса.

  7. Введите пароль, которым защищен файл secrets.yml.