Spec-Zone.ru › Ansible 2.10

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

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

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

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

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

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

Подробную информацию о создании коллекций см. в разделе Разработка коллекций.

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

Используйте команду init для инициализации базовой структуры новой роли, чтобы сэкономить время на создании различных каталогов и файлов main.yml, необходимых для роли.

$ ansible-galaxy init role_name

Это создаст следующую структуру каталогов в текущей рабочей директории:

role_name/
    README.md
    .travis.yml
    defaults/
        main.yml
    files/
    handlers/
        main.yml
    meta/
        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 требует авторизации, и команда login может быть использована для этого. Прежде чем вы сможете использовать команду login, вы должны создать учетную запись на веб-сайте Galaxy.

Команда login требует использования ваших учетных данных GitHub. Вы можете использовать имя пользователя и пароль или создать личный токен доступа. Если вы выберете создание токена, предоставьте токен минимальные права доступа, так как он используется только для проверки личности.

Следующее показывает авторизацию на веб-сайте Galaxy с использованием имени пользователя и пароля GitHub:

$ ansible-galaxy login

We need your GitHub login to identify you.
This information will not be sent to Galaxy, only to api.github.com.
The password will not be displayed.

Use --github-token if you do not want to enter your password.

GitHub Username: dsmith
Password for dsmith:
Successfully logged into Galaxy as dsmith

Когда вы выбираете использование имени пользователя и пароля, ваш пароль не отправляется в Galaxy. Он используется для аутентификации в GitHub и создания личного токена доступа. Затем токен отправляется в Galaxy, который, в свою очередь, проверяет вашу личность и возвращает токен доступа Galaxy. После завершения аутентификации токен GitHub уничтожается.

Если вы не хотите использовать свой пароль GitHub или у вас включена двухфакторная аутентификация в GitHub, используйте опцию --github-token для передачи личного токена доступа, который вы создали.

Импорт роли

Для использования команды import необходимо предварительно выполнить авторизацию с помощью команды login. После авторизации вы можете импортировать любой репозиторий GitHub, который вам принадлежит или к которому вы имеете доступ.

Используйте следующее для импорта роли:

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

Ветка

Используйте опцию --branch для импорта определенной ветки. Если не указано иное, используется ветка по умолчанию для репозитория.

Имя роли

По умолчанию имя роли будет получено из имени репозитория GitHub. Однако вы можете использовать опцию --role-name для переопределения этого и задания имени.

Без ожидания

Если присутствует опция --no-wait, команда не будет ожидать результатов. Результаты последнего импорта любых ваших ролей доступны на веб-сайте Galaxy в разделе «Мои импорты».

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

Для использования команды delete необходимо предварительно выполнить авторизацию с помощью команды login. После авторизации вы можете удалить роль с веб-сайта Galaxy. Вы можете удалять только роли, к репозиториям которых у вас есть доступ в GitHub.

Используйте следующее для удаления роли:

$ ansible-galaxy delete github_user github_repo

Это только удаляет роль из Galaxy. Это не удаляет и не изменяет фактический репозиторий GitHub.

Интеграции с Travis

Вы можете создать интеграцию или подключение между ролью в Galaxy и Travis. После установления подключения сборка в Travis автоматически инициирует импорт в Galaxy, обновляя индекс поиска последней информацией о роли.

Вы создаете интеграцию, используя команду setup, но прежде чем интеграция может быть создана, вы должны предварительно авторизоваться с помощью команды login; у вас также должна быть учетная запись в Travis, а также ваш токен Travis. После подготовки используйте следующую команду для создания интеграции:

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


ID         Source     Repo
---------- ---------- ----------
2          travis     github_user/github_repo
1          travis     github_user/github_repo

Удаление интеграций с Travis

Используйте опцию --remove для отключения и удаления интеграции с Travis:

$ ansible-galaxy setup --remove ID

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

См. также

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

Обмен коллекциями модулей, playbooks и ролей

Роли

Все об Ansible ролях

Список рассылки

Вопросы? Помощь? Идеи? Обратитесь к списку рассылки на Google Groups

irc.freenode.net

IRC-чат канал #ansible

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

Spec-Zone.ru

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