Spec-Zone.ru › Ansible 2.7
  • Включение плагинов инвентаризации
  • Использование плагинов инвентаризации
  • Список плагинов

Плагины инвентаризации

Плагины инвентаризации позволяют пользователям указывать источники данных для составления инвентаризации хостов, которые Ansible использует для назначения задач, либо через параметры командной строки -i /path/to/file и/или -i 'host1, host2', либо из других источников конфигурации.

Включение плагинов инвентаризации

Большинство плагинов инвентаризации, поставляемых с Ansible, по умолчанию отключены и требуют включения в ваш файл ansible.cfg для работы. Вот как выглядит стандартный белый список в файле конфигурации, поставляемом с Ansible:

[inventory]
enable_plugins = host_list, script, yaml, ini, auto

Этот список также определяет порядок, в котором каждый плагин пытается обработать источник инвентаризации. Любые плагины, отсутствующие в списке, не будут рассматриваться, поэтому вы можете «оптимизировать» загрузку инвентаризации, сводя её к минимуму до необходимых плагинов. Например:

[inventory]
enable_plugins = advanced_host_list, constructed, yaml

Использование плагинов инвентаризации

Единственное требование для использования плагина инвентаризации после его включения — предоставление источника инвентаризации для обработки. Ansible будет пытаться использовать список включенных плагинов инвентаризации по порядку для каждого предоставленного источника инвентаризации. Как только плагин инвентаризации успешно обработает источник, остальные плагины инвентаризации будут пропущены для этого источника.

Чтобы начать использовать плагин инвентаризации с источником конфигурации YAML, создайте файл с принятой схемой имён для соответствующего плагина, затем добавьте plugin: plugin_name. Каждый плагин документирует любые ограничения именования. Например, плагин инвентаризации aws_ec2:

# demo.aws_ec2.yml
plugin: aws_ec2

Или для плагина openstack:

# clouds.yml
plugin: openstack

Плагин инвентаризации auto включен по умолчанию и работает, используя поле plugin, чтобы указать плагин, который должен попытаться обработать его. Вы можете настроить белый список/приоритет используемых плагинов инвентаризации для обработки источника, используя ansible.cfg [‘inventory’] enable_plugins список. После включения плагина и предоставления необходимых параметров вы можете просмотреть заполненную инвентаризацию с помощью ansible-inventory -i demo.aws_ec2.yml --graph:

@all:
  |--@aws_ec2:
  |  |--ec2-12-345-678-901.compute-1.amazonaws.com
  |  |--ec2-98-765-432-10.compute-1.amazonaws.com
  |--@ungrouped:

Вы можете установить путь к инвентаризации по умолчанию (через inventory в разделе ansible.cfg [defaults] или переменную окружения ANSIBLE_HOSTS) для вашего источника инвентаризации. Теперь выполнение ansible-inventory --graph должно дать тот же результат, что и при непосредственном передаче вашего(их) источника(ов) конфигурации YAML. Вы можете добавить пользовательские плагины инвентаризации в ваш путь плагинов, чтобы использовать их таким же образом.

Ваш источник инвентаризации может быть каталогом файлов конфигурации инвентаризации. Созданный плагин инвентаризации работает только с хостами, уже присутствующими в инвентаризации, поэтому вы можете захотеть, чтобы сконструированная конфигурация инвентаризации обрабатывалась в определённый момент (например, в последнюю очередь). Ansible обрабатывает каталог рекурсивно, в алфавитном порядке. Вы не можете настроить подход к обработке, поэтому назовите свои файлы, чтобы всё работало предсказуемо. Плагины инвентаризации, расширяющие возможности построения, могут обойти это ограничение, добавив опции построения в дополнение к опциям плагина инвентаризации. В противном случае вы можете использовать -i с несколькими источниками, чтобы установить определённый порядок, например, -i demo.aws_ec2.yml -i clouds.yml -i constructed.yml.

Вы можете создавать динамические группы, используя переменные хостов с помощью опции keyed_groups в конструкторе. Опция groups также может использоваться для создания групп, а compose создаёт и изменяет переменные хостов. Вот пример aws_ec2, использующий возможности построения:

# demo.aws_ec2.yml
plugin: aws_ec2
regions:
  - us-east-1
  - us-east-2
keyed_groups:
  # add hosts to tag_Name_value groups for each aws_ec2 host's tags.Name variable
  - key: tags.Name
    prefix: tag_Name_
    separator: ""
groups:
  # add hosts to the group development if any of the dictionary's keys or values is the word 'devel'
  development: "'devel' in (tags|list)"
compose:
  # set the ansible_host variable to connect with the private IP address without changing the hostname
  ansible_host: private_ip_address

Теперь вывод ansible-inventory -i demo.aws_ec2.yml --graph:

@all:
  |--@aws_ec2:
  |  |--ec2-12-345-678-901.compute-1.amazonaws.com
  |  |--ec2-98-765-432-10.compute-1.amazonaws.com
  |  |--...
  |--@development:
  |  |--ec2-12-345-678-901.compute-1.amazonaws.com
  |  |--ec2-98-765-432-10.compute-1.amazonaws.com
  |--@tag_Name_ECS_Instance:
  |  |--ec2-98-765-432-10.compute-1.amazonaws.com
  |--@tag_Name_Test_Server:
  |  |--ec2-12-345-678-901.compute-1.amazonaws.com
  |--@ungrouped

Если хост не имеет переменных в вышеприведённой конфигурации (например, tags.Name, tags, private_ip_address), хост не будет добавлен в группы, кроме тех, которые создаёт плагин инвентаризации, и переменная хоста ansible_host не будет изменена.

Список плагинов

Вы можете использовать ansible-doc -t inventory -l для просмотра списка доступных плагинов. Используйте ansible-doc -t inventory <plugin name> для просмотра документации и примеров, специфичных для каждого плагина.

  • advanced_host_list — Обрабатывает список хостов с диапазонами
  • auto — Загружает и выполняет плагин инвентаризации, указанный в конфигурации YAML
  • aws_ec2 — источник инвентаризации ec2
  • aws_rds — источник инстансов rds
  • azure_rm — плагин инвентаризации Azure Resource Manager
  • constructed — Использует Jinja2 для построения переменных и групп на основе имеющейся инвентаризации.
  • foreman — источник инвентаризации foreman
  • gcp_compute — источник инвентаризации Google Cloud Compute Engine
  • generator — Использует Jinja2 для построения хостов и групп из шаблонов
  • host_list — Обрабатывает строку списка хостов
  • ini — Использует файл Ansible INI в качестве источника инвентаризации.
  • k8s — источник инвентаризации Kubernetes (K8s)
  • nmap — Использует nmap для поиска хостов для назначения
  • openshift — источник инвентаризации OpenShift
  • openstack — источник инвентаризации OpenStack
  • scaleway — источник инвентаризации Scaleway
  • script — Выполняет скрипт инвентаризации, возвращающий JSON
  • tower — динамический плагин инвентаризации Ansible для Ansible Tower.
  • virtualbox — источник инвентаризации virtualbox
  • vmware_vm_inventory — источник инвентаризации VMware Guest
  • vultr — источник инвентаризации Vultr
  • yaml — Использует определённый YAML-файл в качестве источника инвентаризации.

См. также

О Playbook
Введение в Playbook
Плагины обратной связи
Плагины обратной связи Ansible
Плагины соединения
Плагины соединения Ansible
Фильтры
Плагины фильтров Jinja2
Тесты
Плагины тестов Jinja2
Поиск
Плагины поиска Jinja2
Плагины переменных
Плагины переменных Ansible
Пользовательская почтовая рассылка
Есть вопрос? Заходите на группу Google!
irc.freenode.net
Чат-канал IRC #ansible

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/plugins/inventory.html

Spec-Zone.ru

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