Руководство пользователя Galaxy
Ansible Galaxy относится к веб-сайту Galaxy, бесплатному сайту для поиска, загрузки и совместного использования ролей, разработанных сообществом.
Используйте Galaxy, чтобы быстро начать проект автоматизации с отличным контентом сообщества Ansible. Galaxy предоставляет предварительно упакованные единицы работы, такие как роли, и, начиная с Galaxy 3.2, коллекции. Вы можете найти роли для настройки инфраструктуры, развертывания приложений и всех задач, которые вы выполняете ежедневно. Формат коллекции предоставляет комплексный пакет автоматизации, который может включать несколько playbooks, роли, модули и плагины.
- Поиск коллекций в Galaxy
-
- Установка коллекции из Galaxy
- Загрузка коллекции из Automation Hub
- Установка более старой версии коллекции
- Установка нескольких коллекций с помощью файла requirements
- Загрузка коллекции для автономного использования
- Установка коллекции из репозитория git
- По умолчанию места поиска репозиториев
- Указание места поиска коллекций
- Просмотр установленных коллекций
- Настройка клиента
ansible-galaxy
Поиск коллекций в Galaxy
Чтобы найти коллекции в Galaxy:
- Нажмите значок Поиск в левой навигации.
- Установите фильтр на коллекцию.
- Установите другие фильтры и нажмите ввод.
Galaxy отобразит список коллекций, соответствующих вашим критериям поиска.
Установка коллекций
Установка коллекции из Galaxy
По умолчанию, ansible-galaxy collection install использует https://galaxy.ansible.com в качестве сервера Galaxy (как указано в файле ansible.cfg в разделе GALAXY_SERVER). Вам не нужна дополнительная настройка.
См. Настройка клиента ansible-galaxy, если вы используете другой сервер Galaxy, такой как Red Hat Automation Hub.
Чтобы установить коллекцию, размещенную в Galaxy:
ansible-galaxy collection install my_namespace.my_collection
Вы также можете напрямую использовать tarball из своего сборки:
ansible-galaxy collection install my_namespace-my_collection-1.0.0.tar.gz -p ./collections
Примечание
Команда установки автоматически добавляет путь ansible_collections к указанному с помощью параметра -p, за исключением случаев, когда родительский каталог уже находится в папке под названием ansible_collections.
При использовании параметра -p для указания пути установки используйте одно из значений, настроенных в COLLECTIONS_PATHS, так как именно здесь Ansible ожидает найти коллекции. Если вы не укажете путь, ansible-galaxy collection install установит коллекцию по первому пути, определенному в COLLECTIONS_PATHS, который по умолчанию равен ~/.ansible/collections.
Вы также можете разместить коллекцию рядом с текущим playbook, в структуре каталогов collections/ansible_collections/.
./ ├── play.yml ├── collections/ │ └── ansible_collections/ │ └── my_namespace/ │ └── my_collection/<collection structure lives here>
См. Структура коллекции для получения подробной информации о структуре каталогов коллекции.
Загрузка коллекции из Automation Hub
Вы можете загружать коллекции из Automation Hub в командной строке. Контент Automation Hub доступен только для подписчиков, поэтому вы должны загрузить токен API и настроить свою локальную среду для его предоставления, прежде чем сможете загружать коллекции. Чтобы загрузить коллекцию из Automation Hub с помощью команды ansible-galaxy, выполните следующие действия:
- Получите свой токен API Automation Hub. Перейдите по адресу https://cloud.redhat.com/ansible/automation-hub/token/ и нажмите Получить токен API из раскрывающегося списка версии, чтобы скопировать свой токен API.
- Настройте сервер Red Hat Automation Hub в параметре
server_listв разделе[galaxy]в вашем файлеansible.cfg.
[galaxy] server_list = automation_hub [galaxy_server.automation_hub] url=https://cloud.redhat.com/api/automation-hub/ auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token token=my_ah_token
- Загрузите коллекцию, размещенную в Automation Hub.
ansible-galaxy collection install my_namespace.my_collection
См. также
- Начало работы с Automation Hub
-
Введение в Automation Hub
Установка более старой версии коллекции
Можно установить только одну версию коллекции одновременно. По умолчанию ansible-galaxy устанавливает последнюю доступную версию. Если вы хотите установить определенную версию, вы можете добавить идентификатор диапазона версий. Например, чтобы установить версию 1.0.0-beta.1 коллекции:
ansible-galaxy collection install my_namespace.my_collection:==1.0.0-beta.1
Вы можете указать несколько идентификаторов диапазонов, разделенных ,. Используйте одинарные кавычки, чтобы оболочка передала всю команду, включая >, !, и другие операторы, вместе. Например, чтобы установить последнюю версию, которая больше или равна 1.0.0 и меньше 2.0.0:
ansible-galaxy collection install 'my_namespace.my_collection:>=1.0.0,<2.0.0'
Ansible всегда будет устанавливать последнюю версию, которая соответствует указанным вами идентификаторам диапазонов. Вы можете использовать следующие идентификаторы диапазонов:
-
*: Последняя версия. Это значение по умолчанию. -
!=: Не равно указанной версии. -
==: Точно указанная версия. -
>=: Больше или равно указанной версии. -
>: Больше указанной версии. -
<=: Меньше или равно указанной версии. -
<: Меньше указанной версии.
Примечание
По умолчанию ansible-galaxy игнорирует предварительные версии. Чтобы установить предварительную версию, необходимо использовать идентификатор диапазона == для ее явного требования.
Установка нескольких коллекций с помощью файла requirements
Вы также можете создать файл requirements.yml для установки нескольких коллекций одной командой. Этот файл представляет собой YAML-файл в формате:
--- collections: # With just the collection name - my_namespace.my_collection # With the collection name, version, and source options - name: my_namespace.my_other_collection version: 'version range identifiers (default: ``*``)' source: 'The Galaxy URL to pull the collection from (default: ``--api-server`` from cmdline)'
Поддерживаемые ключи для записей требований к коллекциям — name, version, source, и type.
Ключ version может принимать тот же формат идентификаторов диапазонов, описанный выше. Если вы устанавливаете коллекцию из репозитория git, а не из готового артефакта, ключ version относится к git commit-ish.
Ключ type может быть установлен в значения galaxy, url, file, и git. Если type опущен, ключ name используется для неявного определения источника коллекции.
Роли также могут быть указаны и размещены в ключе roles. Значения следуют тому же формату, что и файл requirements, используемый в более старых версиях Ansible.
---
roles:
# Install a role from Ansible Galaxy.
- name: geerlingguy.java
version: 1.9.6
collections:
# Install a collection from Ansible Galaxy.
- name: geerlingguy.php_roles
version: 0.9.3
source: https://galaxy.ansible.com
Чтобы установить роли и коллекции одновременно одной командой, выполните следующее:
$ ansible-galaxy install -r requirements.yml
Выполнение ansible-galaxy collection install -r или ansible-galaxy role install -r установит только коллекции или роли соответственно.
Примечание
Установка ролей и коллекций из одного файла требований не сработает при указании пользовательского пути установки коллекции или роли. В этом случае коллекции будут пропущены, и команда обработает каждую, как ansible-galaxy role install.
Загрузка коллекции для автономного использования
Для загрузки архива коллекции из Galaxy для автономного использования:
- Перейдите на страницу коллекции.
- Нажмите на Загрузить архив.
Возможно, вам также потребуется вручную загрузить все зависимые коллекции.
Установка коллекции из репозитория Git
Вы можете установить коллекцию из репозитория Git, указав URI репозитория вместо имени коллекции или пути к файлу tar.gz. Коллекция должна содержать файл galaxy.yml, который будет использован для генерации данных артефакта коллекции из каталога. URI должен быть префиксным с git+ (или с git@ для использования закрытого репозитория с аутентификацией SSH) и необязательно поддерживает разделенный запятыми git commit-ish версию (например, коммит или тег).
Предупреждение
Включение учетных данных в URI Git небезопасно. Убедитесь, что вы используете безопасные параметры аутентификации по соображениям безопасности. Например, используйте SSH, netrc или http.extraHeader/url.<base>.pushInsteadOf в конфигурации Git, чтобы предотвратить раскрытие ваших данных в логах.
# Install a collection in a repository using the latest commit on the branch 'devel' ansible-galaxy collection install git+https://github.com/organization/repo_name.git,devel # Install a collection from a private github repository ansible-galaxy collection install git@github.com:organization/repo_name.git # Install a collection from a local git repository ansible-galaxy collection install git+file:///home/user/path/to/repo/.git
В файле requirements.yml вы также можете использовать ключи type и version в дополнение к использованию синтаксиса git+repo,version для имени коллекции.
collections:
- name: https://github.com/organization/repo_name.git
type: git
version: devel
Репозитории Git также могут использоваться для зависимостей коллекций. Это может быть полезно для разработки и тестирования локально, но созданные/опубликованные артефакты должны зависеть только от других артефактов.
dependencies: {'git@github.com:organization/repo_name.git': 'devel'}
Стандартные расположения поиска репозитория
По умолчанию ищутся два пути в репозитории для коллекций.
Первый — файл galaxy.yml в корневом каталоге пути репозитория. Если файл galaxy.yml существует, он используется как метаданные коллекции, и коллекция устанавливается.
├── galaxy.yml ├── plugins/ │ ├── lookup/ │ ├── modules/ │ └── module_utils/ └─── README.md
Второй — файл galaxy.yml в каждом каталоге в пути репозитория (на одном уровне). В этом случае каждый каталог с файлом galaxy.yml устанавливается как коллекция.
directory/ ├── docs/ ├── galaxy.yml ├── plugins/ │ ├── inventory/ │ └── modules/ └── roles/
Указание расположения для поиска коллекций
Если у вас другая структура репозитория или вы хотите установить только подмножество коллекций, вы можете добавить фрагмент в конец вашего URI (перед необязательной разделенной запятыми версией), чтобы указать, какой путь ansible-galaxy должен проверить на наличие файлов galaxy.yml. Путь должен указывать на каталог с коллекцией или несколькими коллекциями (а не на путь к файлу galaxy.yml).
namespace/
└── name/
├── docs/
├── galaxy.yml
├── plugins/
│ ├── README.md
│ └── modules/
├── README.md
└── roles/
# Install all collections in a particular namespace ansible-galaxy collection install git+https://github.com/organization/repo_name.git#/namespace/ # Install an individual collection using a specific commit ansible-galaxy collection install git+https://github.com/organization/repo_name.git#/namespace/name/,7b60ddc245bc416b72d8ea6ed7b799885110f5e5
Просмотр установленных коллекций
Для просмотра установленных коллекций выполните команду ansible-galaxy collection list. Более подробная информация в Просмотр коллекций.
Настройка клиента ansible-galaxy
По умолчанию ansible-galaxy использует https://galaxy.ansible.com в качестве сервера Galaxy (как указано в файле ansible.cfg в разделе GALAXY_SERVER).
Вы можете использовать любой из нижеприведённых вариантов для настройки ansible-galaxy collection для использования других серверов (таких как Red Hat Automation Hub или пользовательский сервер Galaxy):
- Установите список серверов в параметре конфигурации GALAXY_SERVER_LIST в Файл конфигурации.
- Используйте аргумент командной строки
--serverдля ограничения до отдельного сервера.
Для настройки списка серверов Galaxy в файле ansible.cfg:
- Добавьте параметр
server_listв раздел[galaxy]для одного или нескольких имён серверов. - Создайте новый раздел для каждого имени сервера.
- Установите параметр
urlдля каждого имени сервера. - Необязательно, установите токен API для каждого имени сервера. Подробности см. в Токен API.
Примечание
Параметр url для каждого имени сервера должен заканчиваться слешем /. Если вы не устанавливаете токен API в списке серверов Galaxy, используйте аргумент --api-key для передачи токена в команду ansible-galaxy collection publish.
Для Automation Hub дополнительно необходимо:
- Установите параметр
auth_urlдля каждого имени сервера. - Установите токен API для каждого имени сервера. Перейдите на https://cloud.redhat.com/ansible/automation-hub/token/ и нажмите :Получить токен API из выпадающего списка версий, чтобы скопировать свой токен API.
Следующий пример демонстрирует настройку нескольких серверов:
[galaxy] server_list = automation_hub, my_org_hub, release_galaxy, test_galaxy [galaxy_server.automation_hub] url=https://cloud.redhat.com/api/automation-hub/ auth_url=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token token=my_ah_token [galaxy_server.my_org_hub] url=https://automation.my_org/ username=my_user password=my_pass [galaxy_server.release_galaxy] url=https://galaxy.ansible.com/ token=my_token [galaxy_server.test_galaxy] url=https://galaxy-dev.ansible.com/ token=my_test_token
Примечание
Вы можете использовать аргумент командной строки --server для выбора явного сервера Galaxy в server_list, и значение этого аргумента должно совпадать с именем сервера. Для использования сервера, отсутствующего в списке серверов, задайте значение URL для доступа к этому серверу (все серверы из списка серверов будут проигнорированы). Также нельзя использовать аргумент --api-key для предопределённых серверов. Вы можете использовать аргумент api_key только в том случае, если вы не определили список серверов или если вы указали URL в аргументе --server.
Параметры конфигурации списка серверов Galaxy
Параметр GALAXY_SERVER_LIST — это список идентификаторов серверов в приоритетном порядке. При поиске коллекции процесс установки будет искать в указанном порядке, например, automation_hub сначала, затем my_org_hub, release_galaxy, и, наконец, test_galaxy до тех пор, пока коллекция не будет найдена. Фактический экземпляр Galaxy определяется в разделе [galaxy_server.{{ id }}], где {{ id }} — это идентификатор сервера, определённый в списке. Этот раздел может определить следующие ключи:
-
url: URL экземпляра Galaxy для подключения. Обязательно. -
token: Ключ токена API для аутентификации в экземпляре Galaxy. Взаимоисключающий сusername. -
username: Имя пользователя для аутентификации по протоколу basic в экземпляре Galaxy. Взаимоисключающий сtoken. -
password: Пароль для использования совместно сusername, для аутентификации по протоколу basic. -
auth_url: URL сервера Keycloak ‘token_endpoint’, если используется аутентификация SSO (например, Automation Hub). Взаимоисключающий сusername. Требуетtoken.
Кроме определения этих параметров сервера в файле ansible.cfg, вы также можете определить их как переменные окружения. Переменная окружения имеет вид ANSIBLE_GALAXY_SERVER_{{ id }}_{{ key }}, где {{ id }} — это заглавная форма идентификатора сервера, а {{ key }} — это определяемый ключ. Например, я могу определить token для release_galaxy, задав ANSIBLE_GALAXY_SERVER_RELEASE_GALAXY_TOKEN=secret_token.
Для операций, использующих только один сервер Galaxy (например, команды publish, info, или install). команда ansible-galaxy collection использует первый элемент в server_list, если вы не передаёте явный сервер с аргументом --server.
Примечание
После того как коллекция найдена, все её зависимости ищутся только в том же экземпляре Galaxy, что и родительская коллекция. Процесс установки не будет искать зависимость коллекции в другом экземпляре Galaxy.
Поиск ролей в Galaxy
Поиск в базе данных Galaxy по тегам, платформам, автору и нескольким ключевым словам. Например:
$ ansible-galaxy search elasticsearch --author geerlingguy
Команда поиска вернёт список из первых 1000 результатов, соответствующих вашему поиску:
Found 2 roles matching your search: Name Description ---- ----------- geerlingguy.elasticsearch Elasticsearch for Linux. geerlingguy.elasticsearch-curator Elasticsearch curator for Linux.
Получение дополнительной информации о роли
Используйте команду info для просмотра подробностей о конкретной роли:
$ ansible-galaxy info username.role_name
Это вернёт всё, что найдено в Galaxy для роли:
Role: username.role_name
description: Installs and configures a thing, a distributed, highly available NoSQL thing.
active: True
commit: c01947b7bc89ebc0b8a2e298b87ab416aed9dd57
commit_message: Adding travis
commit_url: https://github.com/username/repo_name/commit/c01947b7bc89ebc0b8a2e298b87ab
company: My Company, Inc.
created: 2015-12-08T14:17:52.773Z
download_count: 1
forks_count: 0
github_branch:
github_repo: repo_name
github_user: username
id: 6381
is_valid: True
issue_tracker_url:
license: Apache
min_ansible_version: 1.4
modified: 2015-12-08T18:43:49.085Z
namespace: username
open_issues_count: 0
path: /Users/username/projects/roles
scm: None
src: username.repo_name
stargazers_count: 0
travis_status_url: https://travis-ci.org/username/repo_name.svg?branch=master
version:
watchers_count: 1
Установка ролей из Galaxy
Команда ansible-galaxy поставляется с Ansible и может использоваться для установки ролей из Galaxy или непосредственно из репозитория Git. Вы также можете использовать её для создания новой роли, удаления ролей или выполнения задач на веб-сайте Galaxy.
По умолчанию инструмент командной строки взаимодействует с API веб-сайта Galaxy с использованием адреса сервера https://galaxy.ansible.com. Если вы используете собственный внутренний сервер Galaxy и хотите использовать его вместо стандартного, передайте аргумент --server, следуя за адресом этого сервера Galaxy. Вы можете постоянно настроить этот параметр, задав значение сервера Galaxy в файле ansible.cfg для его использования. Информация о настройке значения в файле ansible.cfg см. в GALAXY_SERVER.
Установка ролей
Используйте команду ansible-galaxy для скачивания ролей с сайта Galaxy
$ ansible-galaxy install namespace.role_name
Настройка места установки ролей
По умолчанию Ansible скачивает роли в первую доступную папку в списке стандартных путей ~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles. Это устанавливает роли в домашнем каталоге пользователя, выполняющего ansible-galaxy.
Вы можете переопределить это, используя один из следующих вариантов:
- Установите переменную среды
ANSIBLE_ROLES_PATHв вашей сессии. - Используйте опцию
--roles-pathдля командыansible-galaxy. - Определите
roles_pathв файлеansible.cfg.
Следующий пример демонстрирует использование --roles-path для установки роли в текущую рабочую директорию:
$ ansible-galaxy install --roles-path . geerlingguy.apache
См. также
- Настройка Ansible
-
Всё о конфигурационных файлах
Установка определенной версии роли
Когда сервер Galaxy импортирует роль, он импортирует любые теги git, соответствующие формату Семантической версии, как версии. В свою очередь, вы можете загрузить определенную версию роли, указав один из импортированных тегов.
Чтобы увидеть доступные версии роли:
- Найдите роль на странице поиска Galaxy.
- Нажмите на имя, чтобы увидеть больше деталей, включая доступные версии.
Вы также можете перейти непосредственно к роли, используя /<namespace>/<имя роли>. Например, чтобы просмотреть роль geerlingguy.apache, перейдите по адресу https://galaxy.ansible.com/geerlingguy/apache.
Чтобы установить определенную версию роли из Galaxy, добавьте запятую и значение тега выпуска GitHub. Например:
$ ansible-galaxy install geerlingguy.apache,v1.0.0
Также возможно указать напрямую репозиторий git и указать имя ветки или хеш коммита в качестве версии. Например, следующее установит определенный коммит:
$ ansible-galaxy install git+https://github.com/geerlingguy/ansible-role-apache.git,0b7cd353c0250e87a26e0499e59e7fd265cc2f25
Установка нескольких ролей из файла
Вы можете установить несколько ролей, включив их в файл requirements.yml. Формат файла - YAML, а расширение файла должно быть либо .yml, либо .yaml.
Используйте следующую команду для установки ролей, включенных в requirements.yml:
$ ansible-galaxy install -r requirements.yml
Опять же, расширение важно. Если расширение .yml опущено, ansible-galaxy CLI предполагает, что файл имеет более старый, теперь устаревший, формат «базовый».
Каждая роль в файле будет иметь один или несколько из следующих атрибутов:
- src
-
Источник роли. Используйте формат namespace.role_name, если загружаете из Galaxy; в противном случае укажите URL, указывающий на репозиторий в git-совместимой системе управления версиями. Смотрите примеры ниже. Это обязательный атрибут.
- scm
-
Укажите систему управления версиями. На данный момент разрешены только git или hg. Смотрите примеры ниже. По умолчанию используется git.
- version:
-
Версия роли для загрузки. Укажите значение тега выпуска, хеш коммита или имя ветки. По умолчанию используется ветка, установленная по умолчанию в репозитории, в противном случае используется master.
- name:
-
Загрузить роль под указанным именем. По умолчанию используется имя из Galaxy при загрузке из Galaxy, в противном случае используется имя репозитория.
Используйте следующий пример в качестве руководства для указания ролей в файле requirements.yml:
# from galaxy - name: yatesr.timezone # from locally cloned git repository (git+file:// requires full paths) - src: git+file:///home/bennojoy/nginx # from GitHub - src: https://github.com/bennojoy/nginx # from GitHub, overriding the name and specifying a specific tag - name: nginx_role src: https://github.com/bennojoy/nginx version: master # from GitHub, specifying a specific commit hash - src: https://github.com/bennojoy/nginx version: "ee8aa41" # from a webserver, where the role is packaged in a tar.gz - name: http-role-gz src: https://some.webserver.example.com/files/master.tar.gz # from a webserver, where the role is packaged in a tar.bz2 - name: http-role-bz2 src: https://some.webserver.example.com/files/master.tar.bz2 # from a webserver, where the role is packaged in a tar.xz (Python 3.x only) - name: http-role-xz src: https://some.webserver.example.com/files/master.tar.xz # from Bitbucket - src: git+https://bitbucket.org/willthames/git-ansible-galaxy version: v1.4 # from Bitbucket, alternative syntax and caveats - src: https://bitbucket.org/willthames/hg-ansible-galaxy scm: hg # from GitLab or other git-based scm, using git+ssh - src: git@gitlab.company.com:mygroup/ansible-base.git scm: git version: "0.1" # quoted, so YAML doesn't parse this as a floating-point value
Предупреждение
Встраивание учетных данных в URL SCM небезопасно. Убедитесь, что используете безопасные параметры аутентификации по соображениям безопасности. Например, используйте SSH, netrc или http.extraHeader/url.<base>.pushInsteadOf в настройках Git, чтобы предотвратить раскрытие ваших учетных данных в логах.
Установка ролей и коллекций из одного файла requirements.yml
Вы можете устанавливать роли и коллекции из одного файла требований, с некоторыми оговорками.
---
roles:
# Install a role from Ansible Galaxy.
- name: geerlingguy.java
version: 1.9.6
collections:
# Install a collection from Ansible Galaxy.
- name: geerlingguy.php_roles
version: 0.9.3
source: https://galaxy.ansible.com
Примечание
Хотя роли и коллекции могут быть указаны в одном файле требований, они должны устанавливаться отдельно. Команда ansible-galaxy role install -r requirements.yml установит только роли, а ansible-galaxy collection install -r requirements.yml -p ./ установит только коллекции.
Установка нескольких ролей из нескольких файлов
Для больших проектов директива include в файле requirements.yml предоставляет возможность разделения большого файла на несколько меньших файлов.
Например, проект может иметь файл requirements.yml и файл webserver.yml.
Ниже приведены содержимое файла webserver.yml:
# from github - src: https://github.com/bennojoy/nginx # from Bitbucket - src: git+http://bitbucket.org/willthames/git-ansible-galaxy version: v1.4
Следующее показывает содержимое файла requirements.yml, который теперь включает файл webserver.yml:
# from galaxy - name: yatesr.timezone - include: <path_to_requirements>/webserver.yml
Чтобы установить все роли из обоих файлов, передайте основной файл, в данном случае requirements.yml в командной строке следующим образом:
$ ansible-galaxy install -r requirements.yml
Зависимости
Роли также могут зависеть от других ролей, и при установке роли с зависимостями эти зависимости будут автоматически установлены в roles_path.
Существует два способа определения зависимостей роли:
- используя
meta/requirements.yml - используя
meta/main.yml
Использование meta/requirements.yml
.. versionadded:: 2.10
Вы можете создать файл meta/requirements.yml и определить зависимости в том же формате, что и для requirements.yml, описанном в разделе Установка нескольких ролей из файла.
После этого вы можете импортировать или включить указанные роли в свои задачи.
Использование meta/main.yml
В качестве альтернативы вы можете указать зависимости ролей в файле meta/main.yml, предоставив список ролей в разделе dependencies. Если источником роли является Galaxy, вы можете просто указать роль в формате namespace.role_name. Вы также можете использовать более сложный формат в requirements.yml, позволяющий указать src, scm, version, и name.
Установленные таким образом зависимости, в зависимости от других факторов, описанных ниже, также будут выполняться **перед** выполнением этой роли во время выполнения playbook. Чтобы лучше понять, как обрабатываются зависимости во время выполнения playbook, см. Роли.
Следующий пример файла meta/main.yml с зависимыми ролями:
---
dependencies:
- geerlingguy.java
galaxy_info:
author: geerlingguy
description: Elasticsearch for Linux.
company: "Midwestern Mac, LLC"
license: "license (BSD, MIT)"
min_ansible_version: 2.4
platforms:
- name: EL
versions:
- all
- name: Debian
versions:
- all
- name: Ubuntu
versions:
- all
galaxy_tags:
- web
- system
- monitoring
- logging
- lucene
- elk
- elasticsearch
Теги наследуются вниз по цепочке зависимостей. Чтобы теги применялись к роли и всем ее зависимостям, тег должен быть применён к роли, а не ко всем задачам внутри роли.
Роли, указанные как зависимости, подчиняются условным операторам и фильтрации тегов и могут не выполняться полностью в зависимости от применяемых тегов и условных операторов.
Если источником роли является Galaxy, укажите роль в формате namespace.role_name:
dependencies: - geerlingguy.apache - geerlingguy.ansible
В качестве альтернативы вы можете указать зависимости ролей в сложном формате, используемом в requirements.yml, следующим образом:
dependencies:
- name: geerlingguy.ansible
- name: composer
src: git+https://github.com/geerlingguy/ansible-role-composer.git
version: 775396299f2da1f519f0d8885022ca2d6ee80ee8
Примечание
Galaxy ожидает, что все зависимости ролей будут существовать в Galaxy, и поэтому зависимости должны быть указаны в формате namespace.role_name. Если вы импортируете роль с зависимостью, где значение src является URL, процесс импорта завершится ошибкой.
Список установленных ролей
Используйте list для отображения имени и версии каждой установленной роли в roles_path.
$ ansible-galaxy list - ansible-network.network-engine, v2.7.2 - ansible-network.config_manager, v2.6.2 - ansible-network.cisco_nxos, v2.7.1 - ansible-network.vyos, v2.7.3 - ansible-network.cisco_ios, v2.7.0
Удаление установленной роли
Используйте remove для удаления роли из roles_path:
$ ansible-galaxy remove namespace.role_name
См. также
- Использование коллекций
-
Разделяемые коллекции модулей, playbooks и ролей
- Роли
-
Многократно используемые задачи, обработчики и другие файлы в известной структуре каталогов
© 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/user_guide.html