Настройка проекта на использование Private Automation Hub

Настройка проекта на использование 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:

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

    [galaxy]
    server_list = my_private_hub, galaxy
    

    Важно

    Особенности заполнения параметра server_list:

    • Допускается использование пробела после запятой.

    • Указанный список заменяет собой список реестров по умолчанию. Это значит, что для использования реестра Ansible Galaxy нужно будет выполнить следующие дополнительные действия:

      1. Указать в значении параметра server_list условное название реестра Ansible Galaxy.

      2. Создать дополнительную секцию с описанием настроек подключения к Ansible Galaxy.

  2. По шаблону создайте и заполните секции для всех упомянутых серверов:

    [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 выполните следующие действия:

  1. В корневом каталоге проекта создайте файл зависимостей requirements.yml, например:

    ---
    collections:
      - name: astra.rupost
        version: 0.14.4
      - name: astra.nginx
        version: 1.8.2
      - name: astra.postgresql
        version: 3.0.0
    
  2. Согласно инструкции создайте полномочие типа 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): содержимое токена.

  3. Если для защиты подключения к 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)
    
  4. Согласно инструкции измените свойства организации, добавив в список Учетные данные Galaxy (Galaxy Credentials) созданное полномочие.

  5. Синхронизируйте проект с источником согласно инструкции. Automation Controller использует связанное с организацией полномочие для загрузки необходимых коллекций из Private Automation Hub.

Пример#

Пусть проект использует коллекции из следующих реестров:

  • Ansible Galaxy;

  • 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, по одному на каждый репозиторий.