Spec-Zone.ru › Ansible

Руководство разработчика Galaxy

Вы можете размещать коллекции и роли в Galaxy, чтобы делиться ими с сообществом Ansible. Содержимое Galaxy представлено в виде предварительно упакованных единиц работы, таких как роли и коллекции. Вы можете создавать роли для подготовки инфраструктуры, развертывания приложений и выполнения повседневных задач. Кроме того, вы можете создавать коллекции — комплексные пакеты средств автоматизации, которые могут включать несколько плейбуков, ролей, модулей и плагинов.

  • Создание коллекций для Galaxy
  • Создание ролей для Galaxy

    • Принудительное создание
    • Роль для контейнера
    • Использование пользовательского каркаса роли
    • Аутентификация в Galaxy
    • Импорт роли
    • Удаление роли
    • Интеграции с Travis

Создание коллекций для 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.

Чтобы создать токен аутентификации:

  1. Нажмите Коллекции > Токен API.
  2. Нажмите Загрузить токен, затем скопируйте его.
  3. Сохраните токен по пути, указанному в параметре 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API