Руководство пользователя Galaxy
Ansible Galaxy относится к веб-сайту Galaxy, свободному ресурсу для поиска, скачивания и обмена коллекциями и ролями, разработанными сообществом.
Используйте Galaxy, чтобы начать работу над своим проектом автоматизации с отличным контентом сообщества Ansible. Galaxy предоставляет предварительно упакованные единицы работы, такие как роли и коллекции. Формат коллекции предоставляет комплексный пакет автоматизации, который может включать несколько playbook, ролей, модулей и плагинов. Для получения полной информации о Galaxy ознакомьтесь с документацией Galaxy.
Поиск коллекций в Galaxy
Чтобы найти коллекции в Galaxy:
- Нажмите Коллекции > Коллекции в левом навигационном меню.
- Введите свой поисковый запрос. Вы можете фильтровать по ключевым словам, тегам и пространствам имен.
Galaxy отобразит список коллекций, соответствующих вашим критериям поиска.
См. Использование коллекций Ansible для получения полной информации об установке и использовании коллекций.
Поиск ролей в Galaxy
Чтобы найти автономные роли (то есть роли, которые не являются частью коллекции):
- Нажмите Роли > Роли в левом навигационном меню.
- Введите свой поисковый запрос. Вы можете фильтровать по ключевым словам, тегам и пространствам имен.
Galaxy отобразит список ролей, соответствующих вашим критериям поиска.
Вы можете дополнительно искать в базе данных Galaxy по тегам, платформам, автору и нескольким ключевым словам, используя команду ansible-galaxy CLI.
$ 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 опущено, 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: 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
-
Разделяемые коллекции модулей, playbook и ролей
- Роли
-
Многократно используемые задачи, обработчики и другие файлы в известной структуре каталогов
- Работа с инструментами командной строки
-
Выполнение других связанных операций
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/galaxy/user_guide.html