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

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

Для развертывания платформы с помощью утилиты aa-setup необходимо предоставить для нее полное описание всех узлов платформы в виде файла инвентаря.

../../../_images/day0-model-green.svg ../../../_images/day0-topology-green.svg ../../../_images/day0-nodes-green.svg ../../../_images/day0-inventory-blue.svg ../../../_images/day0-offline-white.svg ../../../_images/day0-model-green.svg ../../../_images/day0-topology-green.svg ../../../_images/day0-nodes-green.svg ../../../_images/day0-inventory-blue.svg ../../../_images/day0-offline-dark.svg

По умолчанию утилита использует файл inventory, который вы уже создали при подготовке установочного узла. Теперь необходимо отредактировать этот файл так, чтобы он содержал параметры вашей инфраструктуры. Для этого рассмотрим более подробно параметры инвентаря по каждому компоненту Astra Automation. Начнем с общих настроек (General на диаграмме):

../../../_images/general-blue.svg ../../../_images/gateway-white.svg ../../../_images/autoexec-white.svg ../../../_images/content-white.svg ../../../_images/eda-white.svg ../../../_images/tls-white.svg ../../../_images/postgres-white.svg ../../../_images/general-blue.svg ../../../_images/gateway-dark.svg ../../../_images/autoexec-dark.svg ../../../_images/content-dark.svg ../../../_images/eda-dark.svg ../../../_images/tls-dark.svg ../../../_images/postgres-dark.svg

Если необходимо сразу перейти на какой-либо шаг, выберите соответствующий блок диаграммы.

Описание инвентаря следует правилам 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.ini
sudo ./aa-setup --inventory /var/aa/setup-settings.yaml

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

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

INI

YAML

Описание

[automationgateway]

automationgateway.hosts

Узлы шлюза платформы

[automationcontroller]

automationcontroller.hosts

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

[execution_nodes]

execution_nodes.hosts

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

[automationhub]

automationhub.hosts

Узлы Private Automation Hub

[automationedacontroller]

automationedacontroller.hosts

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

[database]

database.hosts

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

[<group>:vars]

<group>.vars

Параметры настройки узлов конкретной группы <group>

[all:vars]

all.vars

Параметры настройки узлов и платформы в целом

После заголовка секции указывают параметры узлов платформы.

Внимание

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

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

Для доступа Ansible к узлам платформы необходимо указать адрес узла и реквизиты учетной записи, которые вы подготовили при настройке установочного узла:

  • 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

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

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

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

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

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

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

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

  1. Убедитесь, что у вас установлен пакет ansible на вашей рабочей станции. Если работаете на подготовленном установочном узле, то этот пакет уже установлен на нем. В противном случае установите его:

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

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

    ---
    ac_username: superadmin
    ac_password: p@ssW0rD!
    postgresql_ac_username: user3532
    postgresql_ac_password: pgPa5Sw0r0
    postgresql_pah_username: user9853
    postgresql_pah_password: s$949d9fK
    
  3. Зашифруйте файл secrets.yml:

    sudo ansible-vault encrypt secrets.yml
    

    По запросу введите пароль для защиты содержимого файла secrets.yml.

  4. В описании инвентаря вместо конфиденциальных данных укажите названия соответствующих переменных из файла 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 }}'
    
    ---
    # ...
    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 }}"
    
  5. На этапе развертывания платформы при запуске утилиты aa-setup следует добавить аргументы --extra-vars и --ask-vault-pass, например:

    sudo ./aa-setup --inventory /var/aa/setup-settings.ini -- --extra-vars @secrets.yml --ask-vault-pass
    
    sudo ./aa-setup --inventory /var/aa/setup-settings.yml -- --extra-vars @secrets.yml --ask-vault-pass
    

    Примечание

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

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