Описание инвентаря#
Для развертывания платформы с помощью утилиты aa-setup необходимо предоставить для нее полное описание всех узлов платформы в виде файла инвентаря.
По умолчанию утилита использует файл inventory, который вы уже создали при подготовке установочного узла.
Теперь необходимо отредактировать этот файл так, чтобы он содержал параметры вашей инфраструктуры.
Для этого рассмотрим более подробно параметры инвентаря по каждому компоненту Astra Automation.
Начнем с общих настроек (General на диаграмме):
Если необходимо сразу перейти на какой-либо шаг, выберите соответствующий блок диаграммы.
Описание инвентаря следует правилам 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 |
Описание |
|---|---|---|
|
|
Узлы шлюза платформы |
|
|
Узлы плоскости управления (Automation Controller) |
|
|
Узлы плоскости исполнения |
|
|
Узлы Private Automation Hub |
|
|
Узлы контроллера Event-Driven Automation |
|
|
Узел СУБД, развертываемой средствами платформы |
|
|
Параметры настройки узлов конкретной группы <group> |
|
|
Параметры настройки узлов и платформы в целом |
После заголовка секции указывают параметры узлов платформы.
Внимание
Использование одного узла для развертывания двух и более компонентов платформы не допускается.
Реквизиты доступа к узлам
Для доступа 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.
Преимущества такого подхода:
Конфиденциальные данные не хранятся в открытом виде. Зашифрованный файл можно безопасно хранить и передавать.
Основной файл инвентаря установщика можно добавить в систему управления версиями. Поскольку он не содержит конфиденциальных данных, это исключает риск их компрометации.
Конфиденциальные данные обновляются отдельно от основной конфигурации.
Чтобы защитить конфиденциальные данные, выполните следующие действия:
Убедитесь, что у вас установлен пакет
ansibleна вашей рабочей станции. Если работаете на подготовленном установочном узле, то этот пакет уже установлен на нем. В противном случае установите его:sudo apt install ansible --yes
В каталоге установщика создайте файл формата 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
Зашифруйте файл
secrets.yml:sudo ansible-vault encrypt secrets.yml
По запросу введите пароль для защиты содержимого файла
secrets.yml.В описании инвентаря вместо конфиденциальных данных укажите названия соответствующих переменных из файла
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 }}"
На этапе развертывания платформы при запуске утилиты
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является частью синтаксиса и указывает, что значения переменных нужно загрузить из указанного файла.Введите пароль, которым защищен файл
secrets.yml.