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

Для контейнерного развертывания платформы с помощью утилиты 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 в каталоге утилиты развертывания. Отредактируйте его в соответствии с выбранной топологией и параметрами инфраструктуры.

Названия параметров у метода развертывания в контейнерах через образы и у метода развертывания на ВМ через deb-пакеты в большинстве случаев совпадают, но не всегда. Для контейнерного метода используйте названия параметров 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/redis-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 ../../../_images/redis-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 --containerized --inventory /var/aa/setup-settings.ini
sudo ./aa-setup --containerized --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

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

[automationdashboard]

automationdashboard.hosts

Узел необязательного компонента Automation Dashboard, если он устанавливается вместе с платформой из офлайн-пакета

[<group>:vars]

<group>.vars

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

[all:vars]

all.vars

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

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

Важно

В контейнерной модели одна ВМ может входить в несколько групп. Такой вариант используется, например, в топологии на одной ВМ, где один узел одновременно входит в группы automationgateway, automationcontroller, automationhub, automationedacontroller и database. Для распределенных топологий размещайте компоненты в соответствии с выбранной схемой.

Тем же запуском утилита aa-setup устанавливает и Automation Dashboard, если платформа развертывается из офлайн-пакета. Группу [automationdashboard] и параметры этого компонента описывает раздел о средствах аналитики.

Учетная запись администратора#

Утилита развертывания требует задания учетных данных администратора платформы:

  • admin_username – название учетной записи, обязательный параметр;

  • admin_password – пароль, обязательный параметр;

  • admin_email – адрес электронной почты.

Укажите параметры в глобальных переменных:

[all:vars]
admin_username='admin'
admin_password='<password>'
admin_email='admin@example.com'
all:
  vars:
    admin_username: admin
    admin_password: <password>
    admin_email: admin@example.com

Предупреждение

Пароли в примерах являются демонстрационными. При использовании в производственной среде замените их на собственные.

Средства аналитики#

Automation Dashboard является дополнительным компонентом. Для его установки необходима группа [automationdashboard] и связанные с ней глобальные переменные.

В группе [automationdashboard] необходимо указать узел, на котором будет установлен Automation Dashboard. Для этого компонента рекомендуется использовать отдельную ВМ. Такой вариант приведен в примере ниже.

[automationdashboard]
dashboard1.example.com

[all:vars]
dashboard_admin_password='<dashboard_admin_password>'
dashboard_pg_password='<dashboard_pg_password>'
automationdashboard:
  hosts:
    dashboard1.example.com:

all:
  vars:
    dashboard_admin_password: <dashboard_admin_password>
    dashboard_pg_password: <dashboard_pg_password>

Здесь:

  • <dashboard_admin_password> – пароль администратора Automation Dashboard;

  • <dashboard_pg_password> – пароль пользователя базы данных Automation Dashboard.

Установочный узел должен иметь доступ по SSH к узлу Automation Dashboard, а узел Automation Dashboard – сетевой доступ к Platform Gateway по HTTPS и к базе данных, указанной в описании инвентаря.

Настройка порта HTTPS, сертификата TLS и публичного DNS-имени для Automation Dashboard приведена в инструкции по добавлению компонента; эти параметры можно задать уже на этом шаге, до первоначального развертывания платформы.

В контейнерной модели Automation Dashboard устанавливается вместе с платформой только при развертывании из офлайн-пакета, то есть когда в глобальных переменных задано bundle_install=true. Если это условие не выполнено, группа [automationdashboard] не обрабатывается, а по завершении установки утилита выводит предупреждение о том, что Automation Dashboard не установлен.

При добавлении Automation Dashboard к уже развернутой платформе дополните описание инвентаря этой платформы параметрами, приведенными ранее. Процедура добавления Automation Dashboard к уже развернутой платформе приведена в отдельной инструкции.

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

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

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

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

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

[all:vars]
ansible_user='admin'
ansible_ssh_private_key_file='ssh-keys/ssh_key'
---
all:
  vars:
    ansible_user: admin
    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, и добавьте в него необходимые переменные в открытом виде.

    ---
    vault_admin_password: <password>
    
    vault_automationgateway_pg_password: <password>
    vault_automationcontroller_pg_password: <password>
    vault_automationhub_pg_password: <password>
    vault_automationedacontroller_pg_password: <password>
    
  3. Зашифруйте файл secrets.yml:

    sudo ansible-vault encrypt secrets.yml
    

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

  4. Если файл был создан не на установочном узле, скопируйте его на установочный узел, чтобы его можно было использовать как файл с переменными для Ansible.

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

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

    [all:vars]
    admin_username='admin'
    admin_password='{{ vault_admin_password }}'
    admin_email='admin@example.com'
    
    automationgateway_pg_username='automationgateway'
    automationgateway_pg_password='{{ vault_automationgateway_pg_password }}'
    
    automationcontroller_pg_username='awx'
    automationcontroller_pg_password='{{ vault_automationcontroller_pg_password }}'
    
    automationhub_pg_username='automationhub'
    automationhub_pg_password='{{ vault_automationhub_pg_password }}'
    
    automationedacontroller_pg_username='automationedacontroller'
    automationedacontroller_pg_password='{{ vault_automationedacontroller_pg_password }}'
    
    ---
    # ...
    all:
      vars:
        admin_username: admin
        admin_password: "{{ vault_admin_password }}"
        admin_email: admin@example.com
    
        automationgateway_pg_username: automationgateway
        automationgateway_pg_password: "{{ vault_automationgateway_pg_password }}"
    
        automationcontroller_pg_username: awx
        automationcontroller_pg_password: "{{ vault_automationcontroller_pg_password }}"
    
        automationhub_pg_username: automationhub
        automationhub_pg_password: "{{ vault_automationhub_pg_password }}"
    
        automationedacontroller_pg_username: automationedacontroller
        automationedacontroller_pg_password: "{{ vault_automationedacontroller_pg_password }}"
    
  6. На этапе развертывания платформы при запуске утилиты aa-setup необходимо добавить ключ --ask-vault-pass и передать после -- аргумент --extra-vars, например:

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

    Примечание

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

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

Дальнейшие шаги#

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

Примечание

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