Spec-Zone.ru › Ansible

Руководство пользователя Galaxy

Ansible Galaxy — это веб-сайт Galaxy, бесплатная площадка для поиска, загрузки и обмена коллекциями и ролями, созданными сообществом.

Используйте Galaxy, чтобы быстро начать проект автоматизации с помощью качественного контента от сообщества Ansible. Galaxy предоставляет готовые к использованию компоненты, такие как роли и коллекции. Формат коллекций предоставляет комплексный пакет автоматизации, который может включать несколько плейбуков, ролей, модулей и плагинов. Подробную информацию о Galaxy см. в документации Galaxy.

  • Поиск коллекций в Galaxy
  • Поиск ролей в Galaxy

    • Дополнительные сведения о роли
  • Установка ролей из Galaxy

    • Установка ролей
    • Установка определённой версии роли
    • Установка нескольких ролей из файла
    • Установка ролей и коллекций из одного файла requirements.yml
    • Установка нескольких ролей из нескольких файлов
    • Зависимости
    • Список установленных ролей
    • Удаление установленной роли

Поиск коллекций в Galaxy

Чтобы найти коллекции в Galaxy:

  1. Нажмите Коллекции > Коллекции в меню навигации слева.
  2. Введите поисковый запрос. Можно фильтровать результаты по ключевым словам, тегам и пространствам имён.

Galaxy отобразит список коллекций, соответствующих критериям поиска.

Полную информацию об установке и использовании коллекций см. в разделе Использование коллекций Ansible.

Поиск ролей в Galaxy

Чтобы найти автономные роли (то есть роли, не входящие в коллекцию):

  1. Нажмите Роли > Роли в меню навигации слева.
  2. Введите поисковый запрос. Можно фильтровать результаты по ключевым словам, тегам и пространствам имён.

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, соответствующие формату семантического версионирования. Поэтому можно загрузить определённую версию роли, указав один из импортированных тегов.

Чтобы посмотреть доступные версии роли:

  1. Найдите роль на странице поиска Galaxy.
  2. Нажмите на её название, чтобы просмотреть дополнительные сведения, включая доступные версии.

Чтобы установить из 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API