Spec-Zone.ru › Ansible

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

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

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

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

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

Коллекции — это формат распространения контента Ansible. Вы можете использовать коллекции для упаковки и распространения playbooks, ролей, модулей и плагинов. Вы можете публиковать и использовать коллекции через 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 init. Это создаст ту же структуру каталогов, но заполнит её файлами по умолчанию, подходящими для роли, совместимой с контейнерами. Например, README.md имеет немного другую структуру, файл .travis.yml тестирует роль с помощью Ansible Container, а каталог meta включает файл container.yml.

Использование собственного шаблона роли

Каталог пользовательского шаблона роли можно указать следующим образом:

$ ansible-galaxy init --role-skeleton=/path/to/skeleton role_name

Когда указан шаблон, init:

  • скопирует все файлы и каталоги из шаблона в новую роль
  • все файлы с расширением .j2, находящиеся вне папки templates, будут обработаны как шаблоны. В настоящее время доступна только переменная role_name
  • каталог .git и любые файлы .git_keep не будут скопированы

Кроме того, шаблон роли и игнорирование файлов можно настроить в ansible.cfg

[galaxy]
role_skeleton = /path/to/skeleton
role_skeleton_ignore = ^.git$,^.*/.git_keep$

Авторизация в Galaxy

Использование команд import, delete и setup для управления вашими ролями на сайте Galaxy требует авторизации в виде ключа API. Вам необходимо создать учётную запись на сайте Galaxy.

Для создания токена авторизации:

  1. Нажмите Коллекции > Токен API.
  2. Нажмите Загрузить токен и скопируйте его.
  3. Сохраните ваш токен в пути, указанном в GALAXY_TOKEN_PATH.

Импорт роли

Используйте файл import``command requires that you authenticate with the API token. You can include it in your ``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.

Удаление роли

Для удаления роли из 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 и ваш токен Travis. После подготовки используйте следующую команду для создания интеграции:

$ ansible-galaxy role setup travis github_user github_repo xxx-travis-token-xxx

Команда setup требует вашего токена Travis, однако токен не сохраняется в Galaxy. Он используется вместе с именем пользователя и репозиторием GitHub для создания хэша, как описано в документации Travis. Хэш сохраняется в Galaxy и используется для проверки уведомлений, полученных от Travis.

Команда setup позволяет Galaxy реагировать на уведомления. Чтобы настроить Travis на выполнение сборки в вашем репозитории и отправку уведомления, следуйте руководству по началу работы с Travis.

Чтобы настроить Travis на отправку уведомления в Galaxy после завершения сборки, добавьте следующее в ваш файл .travis.yml:

notifications:
    webhooks: https://galaxy.ansible.com/api/v1/notifications/

Список интеграций с Travis

Используйте опцию --list для отображения ваших интеграций с Travis:

$ ansible-galaxy 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

Укажите ID интеграции, которую нужно отключить. Вы можете найти ID, используя опцию --list.

См. также

Использование коллекций Ansible

Делимые коллекции модулей, playbooks и ролей

Роли

Всё об Ansible ролях

Общение

Есть вопросы? Нужна помощь? Хотите поделиться своими идеями? Посетите руководство по общению Ansible

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/galaxy/dev_guide.html

Spec-Zone.ru

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