Руководство пользователя Galaxy
Ansible Galaxy относится к веб-сайту Galaxy, бесплатному сайту для поиска, загрузки и совместного использования ролей, разработанных сообществом.
Используйте Galaxy, чтобы начать свой проект автоматизации с отличным контентом сообщества Ansible. Galaxy предоставляет предварительно упакованные единицы работы, такие как роли, и новые, начиная с Galaxy 3.2, коллекции. Вы можете найти роли для подготовки инфраструктуры, развертывания приложений и всех задач, которые вы выполняете ежедневно. Формат коллекции предоставляет комплексный пакет автоматизации, который может включать несколько плейбуков, ролей, модулей и плагинов.
- Поиск коллекций в Galaxy
-
- Установка коллекции из Galaxy
- Загрузка коллекции из Automation Hub
- Установка более старой версии коллекции
- Установка нескольких коллекций с файлом требований
- Загрузка коллекции для автономного использования
- Установка коллекции из репозитория Git
- Стандартные места поиска репозиториев
- Указание места поиска коллекций
- Вывод списка установленных коллекций
- Настройка клиента
ansible-galaxy
Поиск коллекций в Galaxy
Чтобы найти коллекции в Galaxy:
- Нажмите значок Поиск в левом навигационном меню.
- Установите фильтр на коллекцию.
- Установите другие фильтры и нажмите enter.
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
Чтобы обновить коллекцию до последней доступной версии с сервера Galaxy, вы можете использовать опцию --upgrade:
ansible-galaxy collection install my_namespace.my_collection --upgrade
Вы также можете напрямую использовать tarball из своего билда:
ansible-galaxy collection install my_namespace-my_collection-1.0.0.tar.gz -p ./collections
Вы можете создать и установить коллекцию из локальной директории. Утилита ansible-galaxy создает коллекцию, используя метаданные MANIFEST.json или galaxy.yml в директории.
ansible-galaxy collection install /path/to/collection -p ./collections
Вы также можете установить несколько коллекций в директории пространства имен.
ns/
├── collection1/
│ ├── MANIFEST.json
│ └── plugins/
└── collection2/
├── galaxy.yml
└── plugins/
ansible-galaxy collection install /path/to/ns -p ./collections
Примечание
Команда установки автоматически добавляет путь ansible_collections к пути, указанному с помощью опции -p, если родительская директория еще не находится в папке, называемой ansible_collections.
При использовании опции -p для указания пути установки, используйте одно из значений, настроенных в COLLECTIONS_PATHS, так как именно здесь Ansible ожидает найти коллекции. Если вы не укажете путь, ansible-galaxy collection install установит коллекцию в первый путь, определенный в COLLECTIONS_PATHS, который по умолчанию равен ~/.ansible/collections
Вы также можете разместить коллекцию рядом с текущим плейбуком в структуре директорий 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.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. Значения следуют тому же формату, что и файл требований, используемый в более ранних версиях 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 или MANIFEST.json, которые будут использоваться для генерации данных артефакта коллекции из каталога. 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 или MANIFEST.json в корне пути к репозиторию. Если файл существует, он используется в качестве метаданных коллекции, и будет установлена данная коллекция.
├── galaxy.yml ├── plugins/ │ ├── lookup/ │ ├── modules/ │ └── module_utils/ └─── README.md
Второй — файл galaxy.yml или MANIFEST.json в каждом каталоге в пути к репозиторию (на один уровень глубже). В этом случае каждый каталог с файлом метаданных устанавливается как коллекция.
directory/ ├── docs/ ├── MANIFEST.json ├── plugins/ │ ├── inventory/ │ └── modules/ └── roles/
Указание места поиска коллекций
Если у вас другая структура репозитория или вы хотите установить только подмножество коллекций, вы можете добавить фрагмент в конец своего URI (перед необязательной запятой с разделителями версии), чтобы указать, какой путь должен проверять ansible-galaxy на наличие файла(ов) метаданных. Путь должен указывать на каталог с коллекцией или несколькими коллекциями (а не на путь к файлу galaxy.yml или файлу MANIFEST.json).
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 для каждого имени сервера. Перейдите на https://galaxy.ansible.com/me/preferences и нажмите Показать ключ 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=main
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,1.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 опущено, CLI ansible-galaxy предполагает, что файл имеет более старый, теперь устаревший, формат «базовый».
В каждом файле роли будут содержаться один или несколько из следующих атрибутов:
- 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: main # 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/main.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/main.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/main.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
Установка нескольких ролей из нескольких файлов
Для крупных проектов директива 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
Новое в версии 2.10.
Вы можете создать файл meta/requirements.yml и определить зависимости в том же формате, что и для файла requirements.yml, описанного в разделе Установка нескольких ролей из файла.
Оттуда вы можете импортировать или включать указанные роли в свои задачи.
Использование meta/main.yml
В качестве альтернативы вы можете указать зависимости ролей в файле meta/main.yml, предоставив список ролей в разделе dependencies. Если источником роли является Galaxy, вы можете просто указать роль в формате namespace.role_name. Вы также можете использовать более сложный формат в requirements.yml, позволяющий указать src, scm, version и name.
Установленные таким образом зависимости, в зависимости от других факторов, описанных ниже, также будут выполнены **до** выполнения этой роли во время выполнения плейбука. Чтобы лучше понять, как обрабатываются зависимости во время выполнения плейбука, см. Роли.
Следующий пример показывает файл 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
См. также
- Использование коллекций
-
Коллекции модулей, плейбуков и ролей, которые можно использовать совместно
- Роли
-
Многократно используемые задачи, обработчики и другие файлы в известной структуре директорий
© 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/user_guide.html