requirements.yml

Тема дорожной карты · Ansible

Файл requirements.yml является стандартным способом объявления внешних зависимостей от ролей и коллекций для проекта Ansible. Он позволяет каждому члену команды настроить среду одной командой: ansible-galaxy install -r requirements.yml. Этот файл играет ключевую роль в управлении зависимостями и обеспечении воспроизводимости среды разработки и тестирования. Он содержит два необязательных ключа верхнего уровня — roles и collections, — каждый из которых включает элементы с полями name или source, необязательным полем version, а для ролей — необязательным полем scm для загрузки напрямую из Git-репозитория. Фиксация точных версий в requirements.yml обеспечивает воспроизводимость запусков автоматизации; без фиксации версий ansible-galaxy загружает последний доступный релиз. В CI/CD-конвейерах requirements.yml обычно устанавливается перед шагом запуска playbook, гарантируя, что всё необходимое содержимое присутствует на управляющем узле.

Как это работает

requirements.yml — это публичный реестр ролей и коллекций Ansible на galaxy.ansible.com. Коллекции (namespace.name) пакетируют роли, модули, плагины и документацию, предоставляя современный способ поставки Ansible-контента. Установка коллекций может выполняться как напрямую через команду ansible-galaxy collection install community.general, так и через requirements.yml. Для приватного контента используются Automation Hub (Red Hat), приватный Galaxy-сервер или git-репозиторий, также управляются через requirements.yml.

Когда применять

requirements.yml с фиксированными версиями (ansible-galaxy install -r requirements.yml) обеспечивает воспроизводимость среды. Коллекции (современный способ) предпочтительнее standalone-ролей для нового контента; многие "роли" теперь находятся внутри коллекций, таких как community.general, ansible.posix и т.д. Важно аудитировать скачанные коллекции в CI, так как управление цепочками поставок является ключевым аспектом безопасности и качества кода.

Типичные ошибки

Типичные ошибки при использовании requirements.yml включают установку ролей без указания версий (ansible-galaxy install user.role), что может привести к загрузке последней версии, которая может быть несовместимой с вашим проектом. Также часто используются коллекции community.general, хотя многие модули, такие как debug, set_fact, copy, уже встроены в ansible.builtin. Кроме того, следует проверять активность мейнтейнеров, так как даже популярные роли с большим количеством скачиваний могут быть заброшены.

Связанные понятия

Полезные ресурсы