Руководство для разработчиков 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: 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
Ветка
Используйте опцию --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–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/galaxy/dev_guide.html