Примеры использования API#
Работа с контентом Private Automation Hub через API необходима для автоматизации типовых операций без обращения к графической консоли – просмотра, загрузки и выгрузки коллекций Ansible, а также управления образами среды исполнения.
Примеры используют утилиты curl и jq.
Предварительные требования#
Для выполнения примеров необходимы следующие привилегии и роли (см. справочник ролей и привилегий):
загрузка коллекции – привилегия
galaxy.upload_to_namespaceв целевом пространстве имен, которая входит в ролиgalaxy.collection_namespace_ownerиgalaxy.collection_publisher;создание пространства имен, если оно еще не существует, – привилегия
galaxy.add_namespace, которая входит, например, в рольgalaxy.collection_publisher;согласование версий коллекций – роль
galaxy.collection_curator.
Для работы с примерами выполните следующие действия:
Чтобы улучшить формат вывода JSON, установите утилиту
jq:sudo apt install jq
Получите токен доступа к API Private Automation Hub. Токен можно создать в графической консоли (см. описание окна подключения к Private Automation Hub) или запросом к точке доступа
/api/galaxy/v3/auth/token/с базовой аутентификацией:curl -k -X POST -u '<username>:<password>' \ https://<address>/api/galaxy/v3/auth/token/ | jq .
Здесь:
<username>и<password>– учетные данные пользователя платформы;<address>– FQDN или IP-адрес шлюза платформы.
Ожидаемый результат:
Примечание
Аргумент
-kотключает проверку сертификата TLS и допустим только при использовании самозаверенных сертификатов в демонстрационных и тестовых средах.
Полученный токен не имеет срока действия; при повторном запросе выдается новый токен, а прежний отзывается.
Во всех последующих примерах токен передается в заголовке Authorization со схемой token:
Authorization: token <token>
Просмотр коллекций#
Список версий коллекций во всех репозиториях возвращает точка доступа поиска:
curl -k -H 'Authorization: token <token>' \
'https://<address>/api/galaxy/v3/plugin/ansible/search/collection-versions/?limit=2' | jq .
Сокращенный пример ответа:
Для уточнения поиска добавьте параметры запроса, например:
namespace– пространство имен;name– название коллекции;repository_name– название репозитория, напримерpublishedилиaa-certified;keywords– поиск по ключевым словам.
Подробные сведения о конкретной версии коллекции возвращает точка доступа вида /api/galaxy/v3/plugin/ansible/content/<repository>/collections/index/<namespace>/<collection>/versions/<version>/:
curl -k -H 'Authorization: token <token>' \
https://<address>/api/galaxy/v3/plugin/ansible/content/aa-certified/collections/index/astra/ald_pro/versions/1.0.2/ | jq .
Здесь:
<repository>– название репозитория (в примере –aa-certified);<namespace>– пространство имен (в примере –astra);<collection>– название коллекции (в примере –ald_pro);<version>– версия коллекции (в примере –1.0.2).
Сокращенный пример ответа:
Значения полей download_url и artifact.sha256 используются при выгрузке коллекции.
Загрузка коллекции#
Для загрузки версии коллекции в Private Automation Hub выполните следующие действия:
Убедитесь, что архив коллекции содержит файл
meta/runtime.ymlс параметромrequires_ansible, например:requires_ansible: ">=2.15.0"
Если файл отсутствует, импорт завершится ошибкой
'requires_ansible' in meta/runtime.yml is mandatory, but no meta/runtime.yml found.Убедитесь, что в Private Automation Hub существует пространство имен, совпадающее с пространством имен коллекции. При необходимости создайте его:
curl -k -X POST \ -H 'Authorization: token <token>' \ -H 'Content-Type: application/json' \ -d '{"name": "<namespace>", "groups": []}' \ https://<address>/api/galaxy/v3/namespaces/ | jq .
Загрузите архив коллекции:
curl -k -X POST \ -H 'Authorization: token <token>' \ -F 'file=@<namespace>-<collection>-<version>.tar.gz' \ https://<address>/api/galaxy/v3/artifacts/collections/ | jq .
Ожидаемый результат:
Проверьте состояние импорта по значению поля
taskиз предыдущего ответа:curl -k -H 'Authorization: token <token>' \ https://<address><task> | jq '.state'
Здесь
<task>– значение поляtask.Ожидаемый результат:
"completed". Пока импорт выполняется, запрос возвращает"waiting"или"running", поэтому повторите его через несколько секунд. Если состояние –"failed", причина указана в полеerror.descriptionответа.Если версия загружена в репозиторий с конвейером задач Промежуточный (Staging), выполните согласование. Согласуйте версию в графической консоли (см. инструкцию по согласованию) или запросом к API:
curl -k -X POST \ -H 'Authorization: token <token>' \ https://<address>/api/galaxy/v3/collections/<namespace>/<collection>/versions/<version>/move/<source_repo>/<dest_repo>/ | jq .
Здесь:
<source_repo>– репозиторий-источник (например,staging);<dest_repo>– репозиторий-назначение (например,published).
Если версия загружена в репозиторий с конвейером Пусто (None), согласование не требуется – коллекция доступна пользователям сразу.
Убедитесь, что версия коллекции доступна в целевом репозитории:
curl -k -H 'Authorization: token <token>' \ 'https://<address>/api/galaxy/v3/plugin/ansible/search/collection-versions/?namespace=<namespace>&repository_name=<dest_repo>' | jq .
Примечание
Загрузку коллекции также можно выполнить командой ansible-galaxy collection publish или через графическую консоль – см. описание размещения коллекций.
Выгрузка коллекции#
Для выгрузки версии коллекции из Private Automation Hub выполните следующие действия:
Получите URL артефакта из сведений о версии коллекции:
curl -k -H 'Authorization: token <token>' \ https://<address>/api/galaxy/v3/plugin/ansible/content/<repository>/collections/index/<namespace>/<collection>/versions/<version>/ | jq -r '.download_url'
Выгрузите артефакт по полученному URL:
curl -k -L -H 'Authorization: token <token>' \ -o <namespace>-<collection>-<version>.tar.gz \ '<download_url>'
Здесь
<download_url>– URL, полученный на предыдущем шаге.Важно
Точка доступа отвечает перенаправлением, поэтому аргумент
-Lобязателен: без него будет создан пустой файл.Проверьте целостность полученного артефакта, сравнив его контрольную сумму со значением поля
artifact.sha256из сведений о версии:sha256sum <namespace>-<collection>-<version>.tar.gz
Просмотр образов среды исполнения#
Список репозиториев образов возвращает следующая точка доступа:
curl -k -H 'Authorization: token <token>' \
'https://<address>/api/galaxy/v3/plugin/execution-environments/repositories/?limit=3' | jq .
Сокращенный пример ответа:
Загрузка и выгрузка образов#
Реестр образов Private Automation Hub реализует Docker Registry HTTP API V2 и доступен через шлюз платформы: точка доступа реестра – https://<address>/v2/, токен для работы с реестром выдает точка доступа https://<address>/token/ по базовой аутентификации.
Процедура загрузки образов описана в соответствующей инструкции.
Для выгрузки образа используйте команду podman pull (см. описание).