Синхронизация коллекций#

Синхронизация Private Automation Hub с другими реестрами коллекций позволяет решить следующие задачи:

  • сокращение времени загрузки коллекций в Automation Controller и на рабочие места пользователей Ansible;

  • поддержание актуальности версий коллекций в Private Automation Hub;

  • тонкая настройка доступности версий коллекций.

В результате синхронизации в Private Automation Hub будут доступны коллекции, распространяемые через сторонние реестры. Например, можно настроить синхронизацию Private Automation Hub с реестром Automation Hub, чтобы всегда иметь под рукой необходимые версии коллекций, созданных ПАО Группа Астра и ее партнерами.

Для настройки синхронизации коллекций с внешним реестром необходимо выполнить описанные далее действия.

Примечание

В изолированных сетях без доступа к интернету такой способ синхронизации невозможен. Для этого случая предусмотрена загрузка коллекций из среды исполнения.

Получение полномочий#

Некоторые реестры коллекций, например, Ansible Galaxy, не требуют полномочий для доступа к содержимому. Другие предоставляют доступ только авторизованным пользователям. В этом случае для синхронизации коллекций необходимо получить соответствующие полномочия.

  • Аутентификация в Automation Hub выполняется по токену. Для его создания воспользуйтесь инструкцией.

  • Прочие реестры коллекций могут использовать для аутентификации имя пользователя и пароль, токен, ключи SSH и тому подобное. Для получения необходимых полномочий обратитесь к владельцу соответствующего реестра.

Private Automation Hub может использоваться как источник коллекций. Для аутентификации в нем можно использовать следующие способы:

  • токен;

  • имя пользователя и пароль.

Настройка синхронизации#

Для получения в Private Automation Hub коллекций из стороннего реестра коллекций выполните следующие действия:

  1. Согласно инструкции добавьте внешний репозиторий со следующими свойствами:

    • Название (Name): произвольное название внешнего репозитория, например, Automation Hub.

    • URL: URL репозитория во внешнем реестре, например:

      https://hub.example.com/api/galaxy/content/<repository>/
      

      Важно

      URL репозитория должен завершаться символом /.

      Здесь <repository> – название репозитория во внешнем реестре.

      По умолчанию коллекции загружаются из репозитория published. В этом случае допускается указать сокращенный URL:

      https://hub.example.com/api/galaxy/
      
    • Файл требований (Requirements file) – для синхронизации всех доступных коллекций оставьте это поле пустым. Чтобы синхронизировать только определенные коллекции, укажите их названия, например:

      ---
      collections:
        - name: astra.ald_pro
        - name: astra.ceph
        - name: astra.nginx
      

    Также укажите полномочия, используемые для аутентификации во внешнем реестре. При настройке синхронизации Private Automation Hub с реестром Automation Hub заполните поле Токен, а поля Название учетной записи и Пароль оставьте пустыми.

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

Синхронизация#

Следуя инструкции, запустите синхронизацию репозитория с внешним источником. Дождитесь перехода задачи синхронизации в статус Завершено (Completed).

Совет

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

  1. На панели навигации выберите пункт Управление задачами (Task Management).

  2. Нажмите на ссылку с названием задачи синхронизации.

    Сообщения о ходе синхронизации выводятся на панели Сообщения о ходе исполнения (Progress messages).

Публикация#

Чтобы загруженные коллекции были доступны пользователям, разместите их в репозитории со следующими свойствами:

  • У репозитория нет метки pipeline: staging.

    Если версии коллекций загружены в репозиторий с меткой pipeline: staging, проведите согласование – согласованные версии переместятся в репозиторий с меткой pipeline: approved.

    Версии коллекций в репозитории без конвейера задач (Пусто (None)) доступны пользователям сразу, согласование для них не требуется. Чтобы включить для такого репозитория этап согласования, измените его конвейер задач на Согласовано (Approved) – метка pipeline: approved будет присвоена автоматически. Однако после этого напрямую загружать версии коллекций в репозиторий будет нельзя.

  • Включена настройка Создать дистрибутив (Create a distribution).

    Совет

    В свойствах защищенных репозиториев aa-certified, validated, community и published эта настройка включена по умолчанию.

Проверка результатов синхронизации#

Для проверки успешности синхронизации выполните следующие действия в Private Automation Hub и внешнем реестре:

  1. На панели навигации выберите Контент автоматизации ‣ Пространства имен (Automation Content ‣ Namespaces).

  2. Нажмите на ссылку с названием синхронизированного пространства имен.

  3. Убедитесь, что пространство имен в Private Automation Hub содержит все коллекции, указанные в файле требований, а если поле требований оставлено пустым – все коллекции этого пространства имен во внешнем реестре.

Рекомендуемые настройки синхронизации с Automation Hub#

Среди защищенных репозиториев Private Automation Hub для получения коллекций из Automation Hub предназначены validated и aa-certified. Для их настройки на получение проверенных и сертифицированных коллекций из Automation Hub выполните следующие действия:

  1. Создайте токен для доступа к Automation Hub согласно инструкции.

  2. В свойствах внешнего репозитория aa-certified укажите значение токена для доступа к Automation Hub согласно инструкции.

  3. Добавьте внешний репозиторий согласно инструкции:

    • Название: aa-validated.

    • URL:

      https://hub.astra-automation.ru/api/galaxy/content/validated/
      
    • Токен: укажите значение токена для доступа к Automation Hub.

  4. Измените настройки репозитория validated согласно инструкции. В поле Внешний репозиторий (Remote) выберите внешний репозиторий aa-validated.

    Совет

    Изменять настройки репозитория aa-certified не нужно – он по умолчанию настроен на получение содержимого из внешнего репозитория aa-certified.

  5. Запустите синхронизацию обоих репозиториев Private Automation Hub с репозиториями Automation Hub согласно инструкции.

Загрузка из среды исполнения#

Образ aa-full-ee содержит полный перечень коллекций из пространства astra и других наиболее часто используемых коллекций. Этот набор обычно достаточен для начала использования Astra Automation. Чтобы загрузить коллекции из этого набора в приватный реестр, образ содержит утилиту export_collections.py.

Примечание

Этот способ идеально подходит для работы в изолированных сетях, не имеющих доступа к интернету, поскольку образ aa-full-ee включен в Astra Automation offline bundle.

Чтобы проверить список коллекций, доступных в образе aa-full-ee, выполните следующую команду:

podman run -u 0 hub.astra-automation.ru/aa-2.0/aa-full-ee:latest python3 export_collections.py list

Особенности коллекций, доступных на портале Automation Hub, приведены в разделе Глобальная библиотека контента.

Загрузка коллекций выглядит следующим образом:

  1. Убедитесь, что имеется доступ к приватному реестру с привилегиями, необходимыми для загрузки коллекций.

  2. Убедитесь, что имеется токен доступа к API реестра. Если нет, то создайте его согласно инструкции.

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

  4. Загрузите требуемые коллекции из тех, которые доступны в образе, с помощью следующей команды:

    podman run \
        -u 0 \
        -e ANSIBLE_GALAXY_SERVER_GALAXY_URL=https://<IP_or_FQDN> \
        -e ANSIBLE_GALAXY_SERVER_VALIDATED_TOKEN=<API_token> \
        hub.astra-automation.ru/aa-2.0/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 см. в справочнике.