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