community.vmware.vmware_vm_inventory — источник инвентаризации гостевых систем VMware
Примечание
Этот плагин инвентаризации входит в коллекцию community.vmware (версия 6.2.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install community.vmware. Для использования этого плагина инвентаризации требуются дополнительные компоненты; подробности см. в разделе Требования.
Чтобы использовать его в плейбуке, укажите: community.vmware.vmware_vm_inventory.
УСТАРЕЛО
- Удалено в:
-
версии 7.0.0
- Причина:
-
Этот модуль перенесён в новую коллекцию vmware.vmware
- Альтернатива:
-
Вместо него используйте vmware.vmware.vms.
Краткое описание
- Получает виртуальные машины из среды VMware в качестве хостов инвентаризации.
- Использует любой файл с именем, оканчивающимся на vmware.yml, vmware.yaml, vmware_vm_inventory.yml или vmware_vm_inventory.yaml, в качестве файла конфигурации YAML.
Требования
Следующие компоненты должны быть установлены на локальном управляющем узле, который выполняет эту инвентаризацию.
- requests >= 2.3
- vSphere Automation SDK — для работы с тегами
Параметры
Параметр | Комментарии |
|---|---|
cache boolean | Включает или отключает кэширование исходных данных инвентаризации. Для работы требуется настроить плагин кэша. Варианты:
Конфигурация:
|
cache_connection string | Данные подключения к кэшу или путь к нему; подробности см. в документации плагина кэша. Конфигурация:
|
cache_plugin string | Плагин кэша, используемый для исходных данных инвентаризации. По умолчанию: Конфигурация:
|
cache_prefix string | Префикс для файлов или таблиц плагина кэша. По умолчанию: Конфигурация:
|
cache_timeout integer | Время хранения кэша в секундах. По умолчанию: Конфигурация:
|
compose dictionary | Создавать переменные на основе выражений jinja2. По умолчанию: |
enable_backward_compatibility boolean | Свести свойства узла к плоскому списку для обратной совместимости. Варианты:
|
filters list / elements=string | Этот параметр позволяет фильтровать узлы на стороне клиента с помощью шаблонов Jinja. При появлении фильтрации на стороне сервера следует отдавать предпочтение ей. По умолчанию: |
groups dictionary | Добавлять узлы в группы на основе условий Jinja2. По умолчанию: |
hostname string / обязательный | Имя сервера vCenter или ESXi. Конфигурация:
|
hostnames list / elements=string | Список шаблонов в порядке приоритета для формирования inventory_hostname. Шаблон игнорируется, если в результате получена пустая строка или значение None. В шаблоне можно использовать в качестве переменных свойства, указанные в По умолчанию: |
keyed_groups list / elements=dictionary | Добавлять узлы в группы на основе значений переменной. По умолчанию: |
|
default_value string добавлено в ansible-core 2.12 |
Значение по умолчанию, используемое, если значение переменной узла равно Этот параметр нельзя использовать одновременно с |
|
key string |
Ключ входного словаря, используемый для создания групп. |
|
parent_group string |
Родительская группа для группы с ключом. |
|
prefix string |
Имя группы с ключом будет начинаться с этого префикса. По умолчанию: |
|
separator string |
Разделитель, используемый при формировании имени группы с ключом. По умолчанию: |
|
trailing_separator boolean добавлено в ansible-core 2.12 |
Установите для этого параметра значение Этот параметр нельзя использовать одновременно с Варианты:
|
leading_separator boolean добавлено в ansible-core 2.11 | Используется вместе с По умолчанию имя группы с ключом, для которой не указан префикс или разделитель, начинается с символа подчёркивания. Это происходит потому, что префикс по умолчанию — Установите для этого параметра значение Если имя группы сформировано на основе сопоставления, разделитель всё равно используется для объединения элементов. Чтобы полностью отказаться от разделителя в имени группы, задайте для разделителя группы с ключом пустую строку. Варианты:
|
password string / обязательный | Пароль пользователя vSphere. Поддерживает переменную, зашифрованную с помощью vault. Поддерживает шаблонизацию значения с помощью Jinja Конфигурация:
|
port integer | Номер порта для подключения к серверу vCenter или ESXi. По умолчанию: Конфигурация:
|
properties list / elements=string | Укажите список свойств схемы VMware, связанных с виртуальной машиной. Эти свойства будут добавлены в hostvars указанной виртуальной машины. Каждое значение списка может быть путём к определённому свойству объекта виртуальной машины или путём к коллекции объектов виртуальных машин. Если Если Убедитесь, что этот параметр содержит все свойства, используемые в других параметрах. Помимо свойств виртуальной машины, доступны следующие специальные значения: Используйте Используйте Дополнительные атрибуты гостевой системы VMware, которые можно использовать в качестве свойств, см. по ссылке https://docs.ansible.com/ansible/latest/collections/community/vmware/docsite/vmware_scenarios/vmware_inventory_vm_attributes.html По умолчанию: |
proxy_host string | Адрес прокси-сервера, который будет принимать все HTTPS-запросы и перенаправлять их. Укажите имя узла или IP-адрес. Конфигурация:
|
proxy_port integer | Порт HTTP-прокси-сервера, который будет принимать все HTTPS-запросы и перенаправлять их. Конфигурация:
|
resources list / elements=dictionary | Список ресурсов для ограничения области поиска. Каждый элемент ресурса представлен ровно одной парой Имя ключа формируется из имени типа vim в snake case; например, См. типы VIM По умолчанию: |
strict boolean | Если Поскольку в выражениях можно использовать факты, они могут быть доступны не всегда; по умолчанию такие ошибки игнорируются. Варианты:
|
subproperties list / elements=dictionary добавлено в community.vmware 4.2.0 | Список вложенных свойств обычного свойства. Эти вложенные свойства также будут добавлены в hostvars указанной виртуальной машины. По умолчанию: |
|
property string / обязательный |
Имя свойства |
|
subelements list / elements=string |
Список вложенных элементов |
use_extra_vars boolean добавлено в ansible-core 2.11 | Объединять дополнительные переменные с доступными переменными для композиции (наивысший приоритет). Варианты:
Конфигурация:
|
username string / обязательный | Имя пользователя vSphere. Поддерживает переменную, зашифрованную с помощью vault. Поддерживает шаблонизацию значения с помощью Jinja Конфигурация:
|
validate_certs boolean | Разрешает подключение, если SSL-сертификаты недействительны. Установите значение Варианты:
Конфигурация:
|
with_nested_properties boolean | Этот параметр преобразует плоские имена свойств во вложенный словарь. Варианты:
|
with_path boolean | Добавлять путь к виртуальным машинам. Задайте для этого параметра строковое значение, чтобы заменить корневое имя ‘Datacenters’. Варианты:
|
with_sanitized_property_name boolean | Этот параметр позволяет очищать имена свойств, чтобы создавать безопасные имена для использования в Ansible. Кроме того, преобразует имена свойств в snake case. Варианты:
|
with_tags boolean | Добавлять теги и связанные с ними виртуальные машины. На указанной управляющей машине должна быть установлена библиотека «vSphere Automation SDK». Инструкции по установке см. по следующим URL-адресам: https://code.vmware.com/web/sdk/7.0/vsphere-automation-python Варианты:
|
Примечание
Для перечисленных выше записей конфигурации каждого типа (переменная Ansible, переменная окружения и т. д.) задан порядок приоритета от низкого к высокому. Например, переменная, расположенная ниже в списке, переопределит переменную, расположенную выше. Для типов записей также установлен порядок приоритета от низкого к высокому. Например, запись ansible.cfg (расположенная выше в списке) переопределяется переменной Ansible (расположенной ниже в списке).
Примечания
Примечание
- На этом этапе инвентаризация ещё не окончательно сформирована, поэтому автоматически заполненные группы
allиungroupedбудут содержать только данные, явно добавленные в них предыдущими источниками инвентаризации. - Во время построения инвентаризации «магические переменные» времени выполнения недоступны. Например,
groupsиhostvarsещё не существуют.
Примеры
# Sample configuration file for VMware Guest dynamic inventory
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
with_tags: true
# Sample configuration file for VMware Guest dynamic inventory using Jinja to template the username and password.
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: '{{ (lookup("file","~/.config/vmware.yaml") | from_yaml).username }}'
password: '{{ (lookup("file","~/.config/vmware.yaml") | from_yaml).password }}'
validate_certs: false
with_tags: true
# Gather minimum set of properties for VMware guest
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
properties:
- 'name'
- 'guest.ipAddress'
- 'config.name'
- 'config.uuid'
# Gather subproperties such as the parent (mostly cluster) of an ESXi
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
properties:
- 'name'
- 'guest.ipAddress'
- 'config.name'
- 'config.uuid'
subproperties:
- property: 'summary.runtime.host'
subelements:
- 'name'
- 'parent.name'
# Create Groups based upon VMware Tools status
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
properties:
- 'name'
- 'config.name'
- 'guest.toolsStatus'
- 'guest.toolsRunningStatus'
hostnames:
- config.name
keyed_groups:
- key: guest.toolsStatus
separator: ''
- key: guest.toolsRunningStatus
separator: ''
# Filter VMs based upon condition
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
properties:
- 'runtime.powerState'
- 'config.name'
filters:
- runtime.powerState == "poweredOn"
hostnames:
- config.name
# Filter VM's based on OR conditions
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
properties:
- 'name'
- 'config.name'
- 'guest.ipAddress'
- 'guest.toolsStatus'
- 'guest.toolsRunningStatus'
- 'config.guestFullName'
- 'config.guestId'
hostnames:
- 'config.name'
filters:
- config.guestId == "rhel7_64Guest" or config.name == "rhel_20_04_empty"
# Filter VM's based on regex conditions
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
properties:
- 'config.name'
- 'config.guestId'
- 'guest.ipAddress'
- 'summary.runtime.powerState'
filters:
- guest.ipAddress is defined and (guest.ipAddress is match('192.168.*') or guest.ipAddress is match('192.169.*'))
# Using compose and groups
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
properties:
- 'name'
- 'config.name'
- 'guest.ipAddress'
compose:
# This will populate the IP address of virtual machine if available
# and will be used while communicating to the given virtual machine
ansible_host: 'guest.ipAddress'
composed_var: 'config.name'
# This will populate a host variable with a string value
ansible_user: "'admin'"
ansible_connection: "'ssh'"
groups:
VMs: true
hostnames:
- config.name
# Use Datacenter, Cluster and Folder value to list VMs
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.200.241
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
with_tags: true
resources:
- datacenter:
- Asia-Datacenter1
- Asia-Datacenter2
resources:
- compute_resource:
- Asia-Cluster1
resources:
- host_system:
- Asia-ESXI4
- folder:
- dev
- prod
# Use Category and it's relation with Tag
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.201.128
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
hostnames:
- 'config.name'
properties:
- 'config.name'
- 'config.guestId'
- 'guest.ipAddress'
- 'summary.runtime.powerState'
with_tags: true
keyed_groups:
- key: tag_category.OS
prefix: "vmware_tag_os_category_"
separator: ""
with_nested_properties: true
filters:
- "tag_category.OS is defined and 'Linux' in tag_category.OS"
# customizing hostnames based on VM's FQDN. The second hostnames template acts as a fallback mechanism.
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
hostnames:
- 'config.name+"."+guest.ipStack.0.dnsConfig.domainName'
- 'config.name'
properties:
- 'config.name'
- 'config.guestId'
- 'guest.hostName'
- 'guest.ipAddress'
- 'guest.guestFamily'
- 'guest.ipStack'
# Select a specific IP address for use by ansible when multiple NICs are present on the VM
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.223.31
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
compose:
# Set the IP address used by ansible to one that starts by 10.42. or 10.43.
ansible_host: >-
guest.net
| selectattr('ipAddress')
| map(attribute='ipAddress')
| flatten
| select('match', '^10.42.*|^10.43.*')
| list
| first
properties:
- guest.net
# Group hosts using Jinja2 conditionals
plugin: community.vmware.vmware_vm_inventory
strict: false
hostname: 10.65.13.37
username: administrator@vsphere.local
password: Esxi@123$%
validate_certs: false
hostnames:
- config.name
properties:
- 'name'
- 'config.name'
- 'config.datastoreUrl'
groups:
slow_storage: "'Nas01' in config.datastoreUrl[0].name"
fast_storage: "'SSD' in config.datastoreUrl[0].name"
Статус
- Этот инвентарь будет удалён в версии 7.0.0. [устарело]
- Дополнительную информацию см. в разделе УСТАРЕЛО.
Ссылки коллекции
© 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/collections/community/vmware/vmware_vm_inventory_inventory.html