Руководство пользователя Galaxy
Ansible Galaxy — это веб-сайт Galaxy, бесплатная площадка для поиска, загрузки и обмена коллекциями и ролями, созданными сообществом.
Используйте Galaxy, чтобы быстро начать проект автоматизации с помощью качественного контента от сообщества Ansible. Galaxy предоставляет готовые к использованию компоненты, такие как роли и коллекции. Формат коллекций предоставляет комплексный пакет автоматизации, который может включать несколько плейбуков, ролей, модулей и плагинов. Подробную информацию о Galaxy см. в документации Galaxy.
Поиск коллекций в Galaxy
Чтобы найти коллекции в Galaxy:
- Нажмите Коллекции > Коллекции в меню навигации слева.
- Введите поисковый запрос. Можно фильтровать результаты по ключевым словам, тегам и пространствам имён.
Galaxy отобразит список коллекций, соответствующих критериям поиска.
Полную информацию об установке и использовании коллекций см. в разделе Использование коллекций Ansible.
Поиск ролей в Galaxy
Чтобы найти автономные роли (то есть роли, не входящие в коллекцию):
- Нажмите Роли > Роли в меню навигации слева.
- Введите поисковый запрос. Можно фильтровать результаты по ключевым словам, тегам и пространствам имён.
Galaxy отобразит список ролей, соответствующих критериям поиска.
При желании можно выполнять поиск в базе данных Galaxy по тегам, платформам, автору и нескольким ключевым словам с помощью команды CLI ansible-galaxy.
$ ansible-galaxy role search elasticsearch --author geerlingguy
Команда поиска вернёт список первых 1000 результатов, соответствующих запросу:
Found 6 roles matching your search: Name Description ---- ----------- geerlingguy.elasticsearch Elasticsearch for Linux. geerlingguy.elasticsearch-curator Elasticsearch curator for Linux. geerlingguy.filebeat Filebeat for Linux. geerlingguy.fluentd Fluentd for Linux. geerlingguy.kibana Kibana for Linux.
Дополнительные сведения о роли
Используйте команду info, чтобы просмотреть подробные сведения о конкретной роли:
$ ansible-galaxy role 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: main
github_repo: repo_name
github_user: username
id: 6381
is_valid: True
issue_tracker_url:
license: Apache
min_ansible_version: 2.15
modified: YYYY-MM-DDTHH:MM:SS.000Z
namespace: username
open_issues_count: 0
path: /Users/username/projects/roles
role_type: ANS
stargazers_count: 0
travis_status_url: https://travis-ci.org/username/repo_name.svg?branch=main
Установка ролей из 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 role 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 role install --roles-path . geerlingguy.apache
См. также
- Настройка Ansible
-
Всё о файлах конфигурации
Установка определённой версии роли
При импорте роли сервер Galaxy импортирует в качестве версий все теги Git, соответствующие формату семантического версионирования. Поэтому можно загрузить определённую версию роли, указав один из импортированных тегов.
Чтобы посмотреть доступные версии роли:
- Найдите роль на странице поиска Galaxy.
- Нажмите на её название, чтобы просмотреть дополнительные сведения, включая доступные версии.
Чтобы установить из Galaxy определённую версию роли, добавьте запятую и значение тега выпуска GitHub. Например:
$ ansible-galaxy role install geerlingguy.apache,3.2.0
Можно также напрямую указать репозиторий Git и задать в качестве версии имя ветки или хеш коммита. Например, следующая команда установит определённый коммит:
$ ansible-galaxy role 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
-
Источник роли. При загрузке из Galaxy используйте формат namespace.role_name; в противном случае укажите 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-core.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" # note that ranges are not supported for roles
collections:
# Install a collection from Ansible Galaxy.
- name: community.general
version: ">=7.0.0"
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+https://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 role 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
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 role list - namespace-1.foo, v2.7.2 - namespace2.bar, v2.6.2
Удаление установленной роли
Используйте remove, чтобы удалить роль из roles_path:
$ ansible-galaxy role remove namespace.role_name
См. также
- Использование коллекций Ansible
-
Коллекции модулей, плейбуков и ролей, которыми можно делиться
- Роли
-
Повторно используемые задачи, обработчики и другие файлы в известной структуре каталогов
- Работа с инструментами командной строки
-
Выполнение других связанных операций
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/galaxy/user_guide.html