Spec-Zone.ru › Ansible 2.9

Руководство разработчика 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
#ansible IRC чат-канал

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

Spec-Zone.ru

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