Размещение коллекций#

Размещение коллекций в Private Automation Hub состоит из следующих этапов:

  1. Загрузка.

    На этом этапе версия коллекции с рабочей станции разработчика загружается в хранилище Private Automation Hub и попадает в один из репозиториев. Загрузку можно выполнить следующими способами:

  2. Согласование.

    Этот этап обязателен, если версия коллекции загружена в репозиторий с конвейером задач Промежуточный вариант (Staging).

  3. Публикация.

    Если версия коллекции прошла согласование, она размещается в репозитории с конвейером задач Согласовано (Approved) и становится доступной пользователям.

    Версии коллекции, загруженные в репозитории с конвейером Ничего (None), доступны пользователям сразу.

Подробности о жизненном цикле коллекций см. в соответствующей секции.

Настройка Private Automation Hub#

Примечание

Для выполнения этого этапа необходимы привилегии администратора Private Automation Hub.

Для каждой команды разработчиков коллекций Ansible выполните следующие действия:

  1. Создайте пространство имен. Для этого следуйте инструкции.

  2. Создайте группу пользователей-разработчиков коллекций Ansible. Для этого следуйте инструкции.

  3. Назначьте созданной группе роли, позволяющие загружать коллекции. Для этого следуйте инструкции.

    Полный список встроенных ролей и их описание доступны в справочнике.

  4. Предоставьте группе разработчиков коллекций Ansible доступ к соответствующему пространству имен. Для этого следуйте инструкции.

  5. Создайте приватный репозиторий. Для этого следуйте инструкции.

  6. Предоставьте группе разработчиков коллекций Ansible доступ к созданному репозиторию. Для этого следуйте инструкции.

  7. Создайте учетные записи разработчиков коллекций Ansible. Для этого следуйте инструкции.

    При создании учетных записей в поле Группы (Groups) выберите созданную ранее группу пользователей-разработчиков коллекций Ansible.

Перед началом работы#

Авторизуйтесь в Private Automation Hub с учетной записью пользователя-разработчика коллекций Ansible и создайте токен для доступа к Private Automation Hub. Для этого следуйте инструкции.

Загрузка коллекции#

Загрузка версии коллекции с помощью ansible-galaxy#

Используйте утилиту ansible-galaxy для создания архива с файлами коллекции. Для этого в корневом каталоге проекта выполните команду:

ansible-galaxy build

При успешной сборке ansible-galaxy создает в корневом каталоге проекта архив с расширением .tar.gz.

Чтобы загрузить версию коллекции в Private Automation Hub, выполните команду:

ansible-galaxy collection publish \
   --server <PAH_URI>/api/galaxy/<repository> \
   --token <token> \
   /path/to/collection.tar.gz

Здесь:

  • <PAH_URI> – URI Private Automation Hub.

  • <repository> – название репозитория.

    Если название репозитория не указано, коллекция загружается в промежуточный репозиторий по умолчанию.

    Важно

    Нельзя загружать версии коллекций напрямую в репозитории с конвейером задач Согласовано (Approved).

  • <token> – токен для доступа к Private Automation Hub.

  • /path/to/collection.tar.gz – путь к архиву с версией коллекции.

Загрузку версий коллекций можно упростить, если указать настройки репозиториев в конфигурационном файле ansible.cfg:

  1. Создайте секцию [galaxy] и добавьте в нее переменную server_list, в значении которой укажите названия репозиториев, например:

    [galaxy]
    server_list = private_hub_publish, private_hub_testing, dev_ops_hub
    

    Здесь private_hub_publish, private_hub_testing и dev_ops_hub – названия репозиториев.

  2. Создайте секции, содержащие настройки для каждого репозитория, например:

    [galaxy_server.private_hub_publish]
    url = https://private-hub.example.com/api/galaxy/publish/
    token = <token_private_hub>
    
    [galaxy_server.private_hub_testing]
    url = https://private-hub.example.com/api/galaxy/testing/
    token = <token_private_hub>
    
    [galaxy_server.dev_ops_hub]
    url = https://dev-ops-hub.example.com/api/galaxy/
    token = <token_dev_ops_hub>
    

    Здесь в переменных url указаны ссылки на репозитории, при этом:

    • Для Private Automation Hub https://private-hub.example.com/ указаны настройки для репозиториев publish и testing. Это позволяет использовать ansible-galaxy для прямой загрузки версий коллекций в указанные репозитории. Доступ к обоим репозиториям осуществляется с использованием одного и того же токена <token_private_hub>.

    • Для Private Automation Hub https://dev-ops-hub.example.com/ ссылка не содержит названия репозитория. Все загружаемые версии коллекций будут автоматически попадать в промежуточный репозиторий по умолчанию. Доступ к репозиторию осуществляется с использованием токена <token_dev_ops_hub>.

  3. Для загрузки версии коллекции выполните команду:

    ansible-galaxy collection publish --server <repository_name> /path/to/collection.tar.gz
    

    Здесь <repository_name> – название репозитория, указанное в ansible.cfg.

    Совет

    Если в ansible.cfg заданы настройки только для одного репозитория, указывать его в аргументах ansible-galaxy не обязательно:

    ansible-galaxy collection publish /path/to/collection.tar.gz
    

Загрузка версии коллекции с помощью export_collections.py#

Чтобы загрузить версию коллекции в Private Automation Hub с помощью export_collections.py, выполните команду:

podman run \
    -u 0 \
    -e ANSIBLE_GALAXY_SERVER_GALAXY_URL=https://<IP_or_FQDN> \
    -e ANSIBLE_GALAXY_SERVER_VALIDATED_TOKEN=<API_token> \
    aa-full-ee:latest \
    python3 export_collections.py publish <collection_scope>

В данной команде выполните следующие подстановки:

  • <IP_or_FQDN> – IP-адрес или доменное имя реестра коллекций;

  • <API_token> – токен доступа к API реестра коллекций;

  • <collection_scope> – определение загружаемых коллекций одним из способов:

    • --collection <namespace>.<collection> – указание пространства имен (<namespace>) и названия коллекции (<collection>) для публикации одной коллекции, например astra.ald_pro;

    • --namespace <namespace> – указание пространства имен для публикации всех коллекций, входящих в него, например astra;

    • --all – требование опубликовать все доступные коллекции.

Подробнее об утилите export_collections.py см. в справочнике.

Публикация#

Если версия коллекции загружена в репозиторий с конвейером задач Промежуточный вариант (Staging), выполните согласование согласно инструкции.

Если версия коллекции загружена в репозиторий с конвейером задач Ничего (None), дополнительных действий не требуется.