Руководство разработчика Galaxy
Вы можете размещать коллекции и роли в Galaxy, чтобы делиться ими с сообществом Ansible. Контент Galaxy форматируется в предварительно упакованных блоках работы, таких как роли и коллекции. Вы можете создавать роли для настройки инфраструктуры, развертывания приложений и выполнения всех ежедневных задач. Дополнительно, вы можете создавать коллекции, предоставляющие комплексный пакет автоматизации, который может включать несколько playbooks, роли, модули и плагины.
Создание коллекций для 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.
Для создания токена авторизации:
- Нажмите Коллекции > Токен API.
- Нажмите Загрузить токен и скопируйте его.
- Сохраните ваш токен в пути, указанном в 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