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/ в настройках организации или проекта.
Проксирование upstream
Заголовок раздела «Проксирование upstream»По умолчанию NORA проксирует к публичному Ansible Galaxy (https://galaxy.ansible.com). Для использования приватного Galaxy-сервера (Automation Hub, Pulp):
export NORA_ANSIBLE_PROXY=https://hub.internal.example.comexport NORA_ANSIBLE_PROXY_AUTH=user:passwordNORA перезаписывает все upstream URL в ответах метаданных, чтобы они указывали через прокси. Клиенты всегда скачивают через NORA.
config.toml:
[ansible]enabled = trueproxy = "https://galaxy.ansible.com"# proxy_auth = "user:pass"proxy_timeout = 30Переменные окружения:
| Переменная | Описание | По умолчанию |
|---|---|---|
NORA_ANSIBLE_ENABLED | Включить реестр Ansible Galaxy | false |
NORA_ANSIBLE_PROXY | URL upstream-сервера Galaxy | https://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.gz | GET | Скачивание тарбола коллекции |
Полные 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}).