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

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
NORA_ANSIBLE_METADATA_TTLСколько секунд закешированные метаданные считаются свежими (0 — ревалидировать всегда, -1 — не истекают)3600
NORA_ANSIBLE_SERVE_STALEОтдавать устаревшие метаданные из кеша, когда upstream недоступенtrue
NORA_ANSIBLE_REVALIDATEПри ревалидации устаревших метаданных слать upstream условный запрос (304)true
ФункцияСтатусПримечание
Обнаружение 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/...) также поддерживаются как алиасы.

  • Метаданные (список коллекций, детали, версии): кешируются по TTL (NORA_ANSIBLE_METADATA_TTL, по умолчанию 3600 секунд). Пока кеш свежий — отдаются из локального хранилища, при устаревании ревалидируются с upstream (условным запросом, если включён NORA_ANSIBLE_REVALIDATE), а не запрашиваются при каждом запросе. Ответы несут 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 для активации.
  • Офлайн-режим для метаданных работает по принципу best-effort: если upstream недоступен, но метаданные есть в кеше, NORA отдаёт устаревшую копию (HTTP 200 с заголовком X-Nora-Stale: true) — включено по умолчанию (serve_stale, NORA_ANSIBLE_SERVE_STALE). Код 502 возвращается, только если кеша нет вовсе или serve_stale отключён.
  • Тарболы кешируются навсегда после первого скачивания. Для принудительного обновления удалите файл из хранилища (ansible/download/{filename}).