Spec-Zone.ru › Ansible

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

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

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

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

    • Получение дополнительной информации о роли
  • Установка ролей из Galaxy

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

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

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

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

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

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

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

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

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

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

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

  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 опущено, 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

Spec-Zone.ru

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