Руководство разработчика Galaxy
Вы можете размещать коллекции и роли в Galaxy, чтобы делиться ими с сообществом Ansible. Содержимое Galaxy представлено в виде предварительно упакованных единиц работы, таких как роли и коллекции. Вы можете создавать роли для подготовки инфраструктуры, развертывания приложений и выполнения повседневных задач. Кроме того, вы можете создавать коллекции — комплексные пакеты средств автоматизации, которые могут включать несколько плейбуков, ролей, модулей и плагинов.
Создание коллекций для Galaxy
Коллекции — это формат распространения содержимого Ansible. С их помощью можно упаковывать и распространять плейбуки, роли, модули и плагины. Публиковать коллекции и использовать их можно через Ansible Galaxy.
Подробные сведения о создании коллекций см. в разделе Разработка коллекций.
Создание ролей для Galaxy
Используйте команду init, чтобы создать базовую структуру новой роли. Это сэкономит время на создание различных каталогов и файлов main.yml, необходимых для роли.
$ ansible-galaxy role init role_name
В результате в текущем рабочем каталоге будет создана следующая структура каталогов:
role_name/
README.md
defaults/
main.yml
files/
handlers/
main.yml
meta/
main.yml
tasks/
main.yml
templates/
tests/
inventory
test.yml
vars/
main.yml
Если вы хотите создать репозиторий для роли, корневым каталогом репозитория должен быть role_name.
Принудительное создание
Если в текущем рабочем каталоге уже есть каталог с именем роли, команда init завершится ошибкой. Чтобы игнорировать эту ошибку, используйте параметр --force. При принудительном создании будут созданы указанные выше подкаталоги и файлы, а совпадающие элементы будут заменены.
Роль для контейнера
Если вы создаете роль для контейнера, передайте --type container команде ansible-galaxy role init. Будет создана такая же структура каталогов, как и выше, но она будет заполнена файлами по умолчанию, подходящими для роли контейнера. Например, файл README.md будет иметь немного другую структуру, файл .travis.yml будет тестировать роль с помощью Ansible Container, а каталог meta будет содержать файл container.yml.
Использование пользовательского каркаса роли
Пользовательский каталог каркаса роли можно указать следующим образом:
$ ansible-galaxy role init --role-skeleton=/path/to/skeleton role_name
Если указан каркас, команда init выполнит следующие действия:
- скопирует все файлы и каталоги из каркаса в новую роль;
- отрендерит все найденные вне каталога templates файлы .j2 как шаблоны. На данный момент полезной переменной является только role_name;
- не будет копировать каталог
.gitи любые файлы.git_keep.
Кроме того, для настройки каркаса роли и файлов, которые нужно игнорировать, можно использовать ansible.cfg.
[galaxy] role_skeleton = /path/to/skeleton role_skeleton_ignore = ^.git$,^.*/.git_keep$,^\./CLAUDE\.md$
Параметр role_skeleton_ignore представляет собой список регулярных выражений для сопоставления с файлами и каталогами, которые нужно игнорировать. Регулярные выражения сопоставляются с именами каталогов и относительными путями к файлам. Для файла в корне каталога каркаса префиксом пути будет ./ (например, ./README.md), а для файла в подкаталоге каркаса префиксом будет имя этого каталога (например, plugins/README.md).
Аутентификация в Galaxy
Для управления ролями на сайте Galaxy с помощью команд import, delete и setup требуется аутентификация с помощью ключа API. Для этого необходимо создать учетную запись на сайте Galaxy.
Чтобы создать токен аутентификации:
- Нажмите Коллекции > Токен API.
- Нажмите Загрузить токен, затем скопируйте его.
- Сохраните токен по пути, указанному в параметре GALAXY_TOKEN_PATH.
Импорт роли
Для выполнения команды import необходимо пройти аутентификацию с помощью токена API. Вы можете указать его в файле ansible.cfg или использовать параметр команды --token. Удалять можно только роли, для которых у вас есть доступ к репозиторию на GitHub.
Чтобы импортировать новую роль:
$ ansible-galaxy role import github_user github_repo
По умолчанию команда ожидает завершения процесса импорта в Galaxy и отображает результаты по мере его выполнения:
Successfully submitted import request 41 Starting import 41: role_name=myrole repo=githubuser/ansible-role-repo ref= Retrieving GitHub repo githubuser/ansible-role-repo Accessing branch: devel Parsing and validating meta/main.yml Parsing galaxy_tags Parsing platforms Adding dependencies Parsing and validating README.md Adding repo tags as role versions Import completed Status SUCCESS : warnings=0 errors=0
Другие параметры команды см. в разделе ansible-galaxy.
Удаление роли
Для выполнения команды delete необходимо пройти аутентификацию с помощью токена API. Вы можете указать его в файле ansible.cfg или использовать параметр команды --token. Удалять можно только роли, для которых у вас есть доступ к репозиторию на GitHub.
Чтобы удалить роль, выполните следующую команду:
$ ansible-galaxy role delete github_user github_repo
Эта команда удаляет роль только из Galaxy. Она не удаляет и не изменяет сам репозиторий GitHub.
Интеграции с Travis
Вы можете настроить интеграцию или подключение между ролью в Galaxy и Travis. После установки соединения сборка в Travis будет автоматически запускать импорт в Galaxy и обновлять поисковый индекс последними сведениями о роли.
Интеграция создается командой setup с использованием токена API. Вам также понадобятся учетная запись и токен Travis. Когда все будет готово, выполните следующую команду, чтобы создать интеграцию:
$ ansible-galaxy role setup travis github_user github_repo xxx-travis-token-xxx
Для команды настройки требуется токен Travis, однако он не сохраняется в Galaxy. Токен используется вместе с именем пользователя и репозиторием GitHub для создания хеша, как описано в документации Travis. Хеш сохраняется в Galaxy и используется для проверки уведомлений, полученных от Travis.
Команда настройки позволяет Galaxy отвечать на уведомления. Чтобы настроить Travis для запуска сборки в вашем репозитории и отправки уведомления, следуйте руководству Travis для начала работы.
Чтобы Travis уведомлял Galaxy о завершении сборки, добавьте следующий фрагмент в файл .travis.yml:
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
Просмотр интеграций Travis
Используйте параметр --list, чтобы отобразить интеграции Travis:
$ ansible-galaxy role setup --list travis github_user github_repo xxx-travis-token-xxx ID Source Repo ---------- ---------- ---------- 2 travis github_user/github_repo 1 travis github_user/github_repo
Удаление интеграций Travis
Используйте параметр --remove, чтобы отключить и удалить интеграцию Travis:
$ ansible-galaxy role setup --remove ID
Укажите идентификатор интеграции, которую нужно отключить. Его можно найти с помощью параметра --list.
См. также
- Использование коллекций Ansible
-
Коллекции модулей, плейбуков и ролей, которыми можно делиться
- Роли
-
Все о ролях Ansible
- Общение
-
Есть вопросы? Нужна помощь? Хотите поделиться идеями? Посетите руководство по общению с сообществом Ansible.
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/galaxy/dev_guide.html