Публикация ролей
Тема дорожной карты · Ansible
Публикация role Ansible в Ansible Galaxy делает их доступными для сообщества или вашей организации через ansible-galaxy role install. Перед публикацией необходимо инициализировать структуру role с помощью команды ansible-galaxy role init my_role. Важно добавить полный meta/main.yml, который включает в себя namespace, описание, платформы, лицензию и зависимости. Документация должна быть подробной и доступной в файле README.md. Для завершения процесса публикации необходимо создать тег релиза в Git. Загрузка в Galaxy может быть выполнена через веб-интерфейс на galaxy.ansible.com или через команду ansible-galaxy role import <github_user> <repo>, которая связана с GitHub-репозиторием. После этого новые теги Git автоматически инициируют переиндексацию. Для приватного обмена внутри организации Ansible Automation Hub (корпоративное зеркало Galaxy) или самостоятельно размещённый экземпляр Galaxy NG предоставляет хостинг role и collection с аутентификацией.
Как это работает
Публикация ролей — это публичный реестр ролей и collections Ansible (galaxy.ansible.com). Collections (namespace.name) пакетируют роли, модули, плагины и документацию; это современный способ поставки Ansible-контента. Установка collections осуществляется с помощью команды ansible-galaxy collection install community.general или через файл requirements.yml. Для приватного контента используется Ansible Automation Hub (Red Hat), приватный Galaxy-сервер или git-репозиторий через requirements.yml.
Когда применять
Публикация ролей всегда должна сопровождаться файлом requirements.yml с запинненными версиями, что позволяет воспроизводить установку с помощью команды ansible-galaxy install -r requirements.yml. Collections (современный способ) предпочтительны для нового контента по сравнению с standalone-ролями; многие "роли" теперь находятся внутри community.general, ansible.posix и т.д. Аудит скачанных collections в CI важен для обеспечения безопасности и стабильности поставок.
Типичные ошибки
Типичные ошибки при публикации ролей включают использование команды ansible-galaxy install user.role без указания версии, что приводит к автоматическому тяганию последней версии, которая может быть нестабильной или несовместимой. Также ошибочным является использование community.general там, где есть ansible.builtin (debug, set_fact, copy являются встроенными модулями). Необходимо проверять активность мейнтейнеров, так как заброшенная роль с 10K скачиваний всё равно останется заброшенной и может быть нестабильной.