Настройка проекта на использование Private Automation Hub#
Управлять задачами автоматизации можно различными способами, например, с применением Automation Controller и Ansible Navigator.
В обоих случаях для получения коллекций из внешних источников используется утилита ansible-galaxy
.
С настройками по умолчанию она может загружать коллекции только из реестра Ansible Galaxy.
Для загрузки коллекций из Private Automation Hub необходимо выполнить ряд дополнительных настроек.
Совет
Использование образов среды исполнения, содержащих все необходимые коллекции, является более эффективным способом управления зависимостями Ansible, чем их загрузка из реестров коллекций. Для создания собственного образа среды исполнения, содержащего коллекции из 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, по одному на каждый репозиторий.