Перейти к содержимому

Ansible Galaxy

Реестр Ansible Galaxy предоставляет прозрачный кеширующий прокси для galaxy.ansible.com. Метаданные коллекций проксируются с перезаписью URL, а тарболы коллекций иммутабельно кешируются при первом скачивании.

Установка коллекции через NORA:

Окно терминала
ansible-galaxy collection install community.general \
--server http://nora.example.com:4000/ansible/

Установка конкретной версии:

Окно терминала
ansible-galaxy collection install community.general:==12.2.0 \
--server http://nora.example.com:4000/ansible/

В файле ansible.cfg:

[galaxy]
server_list = nora
[galaxy_server.nora]
url = http://nora.example.com:4000/ansible/

Для AWX / Ansible Automation Platform укажите URL Galaxy-сервера http://nora.example.com:4000/ansible/ в настройках организации или проекта.

По умолчанию NORA проксирует к публичному Ansible Galaxy (https://galaxy.ansible.com). Для использования приватного Galaxy-сервера (Automation Hub, Pulp):

Окно терминала
export NORA_ANSIBLE_PROXY=https://hub.internal.example.com
export NORA_ANSIBLE_PROXY_AUTH=user:password

NORA перезаписывает все upstream URL в ответах метаданных, чтобы они указывали через прокси. Клиенты всегда скачивают через NORA.

config.toml:

[ansible]
enabled = true
proxy = "https://galaxy.ansible.com"
# proxy_auth = "user:pass"
proxy_timeout = 30

Переменные окружения:

ПеременнаяОписаниеПо умолчанию
NORA_ANSIBLE_ENABLEDВключить реестр Ansible Galaxyfalse
NORA_ANSIBLE_PROXYURL upstream-сервера Galaxyhttps://galaxy.ansible.com
NORA_ANSIBLE_PROXY_AUTHАутентификация upstream (user:pass)(нет)
NORA_ANSIBLE_PROXY_TIMEOUTТаймаут прокси в секундах30
ФункцияСтатусПримечание
Обнаружение APIПолная/ansible/ и /ansible/api/
Список коллекцийПолнаяКороткие v3 и Pulp-пути
Детали коллекцииПолнаяПерезапись URL
Список версийПолнаяС пагинацией
Детали версииПолнаяПроверки курирования
Скачивание тарболаПолнаяИммутабельный кеш, пути /download/ и /artifacts/
Курирование тарболовПолнаяЧёрный/белый списки с проверкой целостности
Публикация коллекцииТолько прокси (чтение)
ПутьМетодОписание
/ansible/GETОбнаружение API (available_versions)
/ansible/v3/collections/GETСписок коллекций
/ansible/v3/collections/{ns}/{name}/GETДетали коллекции
/ansible/v3/collections/{ns}/{name}/versions/GETСписок версий (с пагинацией)
/ansible/v3/collections/{ns}/{name}/versions/{ver}/GETДетали версии с download_url
/ansible/download/{ns}-{name}-{ver}.tar.gzGETСкачивание тарбола коллекции

Полные Pulp-пути (/ansible/api/v3/plugin/ansible/content/published/collections/index/...) также поддерживаются как алиасы.

  • Метаданные (список коллекций, детали, версии): проксируются при каждом запросе с Cache-Control: public, max-age=60, must-revalidate.
  • Тарболы: кешируются при первом скачивании с Cache-Control: public, max-age=31536000, immutable. Последующие запросы обслуживаются из локального хранилища без обращения к upstream.

Имена пространств имён и коллекций Ansible Galaxy соответствуют шаблону [a-z0-9_]+ — только буквенно-цифровые символы и подчёркивания. Дефисы не допускаются в именах (они используются как разделители в именах файлов тарболов).

Формат имени тарбола: {namespace}-{name}-{version}.tar.gz, например community-general-12.2.0.tar.gz.

  • Только прокси: публикация коллекций через NORA не поддерживается. Используйте ansible-galaxy collection publish напрямую с Galaxy или Automation Hub.
  • Отключён по умолчанию. Установите NORA_ANSIBLE_ENABLED=true для активации.
  • Нет офлайн-режима для метаданных: если upstream недоступен и метаданные не закешированы, запросы возвращают 502.
  • Тарболы кешируются навсегда после первого скачивания. Для принудительного обновления удалите файл из хранилища (ansible/download/{filename}).