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