Настройка проекта на использование Private Automation Hub#
Управлять задачами автоматизации можно различными способами, например, с применением Automation Controller и Ansible Navigator.
В обоих случаях для получения коллекций из внешних источников используется утилита ansible-galaxy
.
С настройками по умолчанию она может загружать коллекции только из реестра Ansible Galaxy.
Для загрузки коллекций из Private Automation Hub необходимо выполнить ряд дополнительных настроек.
Предварительные настройки#
Предварительно в Private Automation Hub необходимо создать токен доступа для проектов.
Важно
Период действия токена по умолчанию – 24 часа. По истечении указанного времени его нужно будет создать заново.
При создании нового токена предыдущий перестает действовать немедленно.
Указание реквизитов#
При управлении задачами автоматизации с помощью Ansible Navigator укажите в файле ansible.cfg
реквизиты доступа к Private Automation Hub:
В секцию
[galaxy]
добавьте параметрserver_list
. В его значении одной строкой через запятую укажите список условных названий репозиториев, из которых будет загружаться содержимое, например:[galaxy] server_list = my_private_hub, galaxy
Важно
Особенности заполнения параметра
server_list
:Допускается использование пробела после запятой.
Указанный список заменяет собой список реестров по умолчанию. Это значит, что для использования реестра Ansible Galaxy нужно будет выполнить следующие дополнительные действия:
Указать в значении параметра
server_list
условное название реестра Ansible Galaxy.Создать дополнительную секцию с описанием настроек подключения к Ansible Galaxy.
По шаблону создайте и заполните секции для всех упомянутых серверов:
[galaxy_server.<name>] url = <url> # При авторизации с использованием токена: token = <token> # При авторизации по названию учетной записи пользователя и паролю: username = <username> password = <password>
Здесь:
<name> – условное название репозитория, указанное в
server_list
.url
– URL репозитория.Важно
URL репозитория должен завершаться символом
/
.По умолчанию коллекции загружаются из репозитория
published
. В этом случае допускается указать сокращенный URL:https://hub.example.com/api/galaxy/
Чтобы получить доступ к репозиторию, отличному от
published
, приведите URL к следующему виду:https://hub.example.com/api/galaxy/content/<repository>/
Здесь <repository> – название репозитория в Private Automation Hub.
<token> – значение токена, используемого для доступа к реестру.
<username> – название учетной записи пользователя реестра.
<password> – пароль пользователя реестра.
Совет
Для доступа к реестру Ansible Galaxy указание учетных данных не требуется.
Создание полномочия#
При управлении задачами автоматизации с помощью Automation Controller достаточно создать полномочие типа API-токен Ansible Galaxy/Automation Hub и связать его с организацией.
Хотя вы все еще можете добавить в проект файл ansible.cfg
, созданный согласно приведенной выше инструкции, использование полномочия имеет ряд преимуществ:
не требуется добавление в файл
ansible.cfg
учетных данных в открытом виде или настройка Automation Controller на работу с внешней системой управления секретами;при устаревании или отзыве токена не нужно вносить изменения в файлы проекта;
действие полномочия распространяется на всех пользователей организации.
Для получения и установки зависимостей из Private Automation Hub выполните следующие действия:
В корневом каталоге проекта создайте файл зависимостей
requirements.yml
, например:--- collections: - name: astra.rupost version: 0.14.4 - name: astra.nginx version: 1.8.2 - name: astra.postgresql version: 3.0.0
Согласно инструкции создайте полномочие типа API-токен Ansible Galaxy/Automation Hub. Поля формы в секции Сведения о типе (Type Details) заполните следующим образом:
URL сервера Galaxy (Galaxy Server URL) – URL репозитория в Private Automation Hub.
Важно
Указанный URL должен завершаться символом
/
.По умолчанию коллекции загружаются из репозитория
published
. В этом случае допускается указать сокращенный URL:https://hub.example.com/api/galaxy/
Чтобы получить доступ к репозиторию, отличному от
published
, приведите URL к следующему виду:https://hub.example.com/api/galaxy/content/<repository>/
Здесь <repository> – название репозитория в Private Automation Hub.
Токен API (API Token): содержимое токена.
Если для защиты подключения к Private Automation Hub используется самоподписанный сертификат, в настройках контроллера включите игнорирование результатов проверки сертификатов SSL при работе с реестрами коллекций.
Если эта настройка выключена, проверка сертификатов при загрузке и установке зависимостей проекта будет завершаться ошибкой:
[WARNING]: Skipping Galaxy server https://hub.example.com/api/galaxy/content/aa-validated/. Got an unexpected error when getting available versions of collection astra.chrony: Unknown error when attempting to call Galaxy at 'https://hub.example.com/api/galaxy/content/aa-validated/api': <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)>. <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)> ERROR! Failed to resolve the requested dependencies map. Could not satisfy the following requirements: * astra.chrony:* (direct request)
Согласно инструкции измените свойства организации, добавив в список Учетные данные Galaxy (Galaxy Credentials) созданное полномочие.
Синхронизируйте проект с источником согласно инструкции. Automation Controller использует связанное с организацией полномочие для загрузки необходимых коллекций из Private Automation Hub.
Пример#
Пусть проект использует коллекции из следующих реестров:
Private Automation Hub, доступный по адресу
https://private-hub.example.com
.При этом необходимо настроить доступ к следующим репозиториям:
published
– репозиторий по умолчанию;testing
– коллекции, не прошедшие полное тестирование;automation-hub
– коллекции, полученные из Automation Hub при синхронизации.
Чтобы настроить проект на работу со всеми указанными реестрами и репозиториями, содержимое ansible.cfg
необходимо привести к следующему виду:
[galaxy]
server_list = galaxy, hub_published, hub_testing, automation_hub
[galaxy_server.galaxy]
url = https://galaxy.ansible.com/
[galaxy_server.hub_published]
url = https://private-hub.example.com/api/galaxy/
token = b23...41e
[galaxy_server.hub_testing]
url = https://private-hub.example.com/api/galaxy/content/testing/
token = b23...41e
[galaxy_server.automation_hub]
url = https://private-hub.example.com/api/galaxy/content/automation-hub/
token = b23...41e
При использовании Automation Controller достаточно описать зависимости в файле requirements.yml
и создать три полномочия типа API-токен Ansible Galaxy/Automation Hub, по одному на каждый репозиторий.