community.vmware.vmware_vm_inventory инвентаризация — источник инвентаризации VMware Guest
Примечание
Этот плагин инвентаризации входит в состав коллекции community.vmware (версия 4.7.1).
У вас, возможно, уже установлена эта коллекция, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.vmware. Для использования этого плагина инвентаризации требуются дополнительные компоненты. Подробности см. в разделе Требования.
Для использования в книге задач укажите: community.vmware.vmware_vm_inventory.
Обзор
- Получение виртуальных машин в качестве узлов инвентаризации из среды 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. По умолчанию: |
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 |
Имя группы по ключу будет начинаться с этого префикса По умолчанию: |
|
Разделитель строка |
Разделитель, используемый для построения имени ключевой группы По умолчанию: |
|
trailing_separator логическое добавлен в ansible-core 2.12 |
Установите это значение в Этот параметр несовместим с Варианты:
|
leading_separator логическое добавлен в ansible-core 2.11 | Используйте вместе с keyed_groups. По умолчанию, у ключевой группы, у которой нет префикса или разделителя, будет имя, начинающееся с подчёркивания. Это потому, что по умолчанию префикс равен “”, а разделитель равен “_”. Установите этот параметр в значение False, чтобы опустить ведущий символ подчеркивания (или другой разделитель), если не задан префикс. Если имя группы получено из отображения, разделитель все равно используется для конкатенации элементов. Чтобы вообще не использовать разделитель в имени группы, установите разделитель для ключевой группы в пустую строку. Варианты:
|
пароль строка / обязательно | Пароль пользователя vSphere. Поддерживает зашифрованные в хранилище переменные. Поддерживает Jinja для шаблонизации значения Настройка:
|
порт целое число | Номер порта, используемый для подключения к vCenter или ESXi Server. По умолчанию: Настройка:
|
свойства список / элементы=строка | Укажите список свойств схемы VMware, связанных с виртуальной машиной. Эти свойства будут заполнены в hostvars данной виртуальной машины. Каждое значение в списке может быть путем к определенному свойству объекта виртуальной машины или путем к коллекции объектов виртуальных машин.
Пожалуйста, убедитесь, что все свойства, используемые в других параметрах, включены в этот параметр. Помимо свойств виртуальной машины, следующие являются специальными значениями Используйте Используйте Дополнительные атрибуты виртуальных машин VMware, которые можно использовать в качестве свойств, см. на https://docs.ansible.com/ansible/latest/collections/community/vmware/docsite/vmware_scenarios/vmware_inventory_vm_attributes.html По умолчанию: |
proxy_host строка | Адрес прокси-сервера, который будет получать все запросы HTTPS и перенаправлять их. Формат - имя хоста или IP-адрес. Настройка:
|
proxy_port целое число | Порт HTTP-прокси, который будет получать все запросы HTTPS и перенаправлять их. Настройка:
|
ресурсы список / элементы=словарь | Список ресурсов для ограничения области поиска. Каждый элемент ресурса представлен ровно одной парой Имя ключа основано на змеином регистре имени типа vim; например См. Типы VIM По умолчанию: |
строгий логическое | Если Так как в выражениях можно использовать факты, они могут быть не всегда доступны, поэтому мы по умолчанию игнорируем эти ошибки. Варианты:
|
подсвойства список / элементы=словарь добавлен в community.vmware 4.2.0 | Список подсвойств из обычного свойства. Эти подсвойства также будут заполнены в hostvars данной виртуальной машины. По умолчанию: |
|
свойство строка / обязательно |
Имя свойства |
|
subelements список / элементы=строка |
Список подэлементов |
use_extra_vars boolean added in ansible-core 2.11 | Объединить дополнительные переменные в доступные переменные для составления (самый высокий приоритет). Варианты:
Настройка:
|
username string / обязательно | Имя пользователя vSphere. Принимает зашифрованную переменную vault. Принимает Jinja для шаблонизации значения Настройка:
|
validate_certs boolean | Разрешает подключение, когда сертификаты SSL недействительны. Установлено в Варианты:
Настройка:
|
with_nested_properties boolean | Этот параметр преобразует имена сжатых свойств в вложенный словарь. Варианты:
|
with_path boolean | Включить путь виртуальных машин. Установите этот параметр в строковое значение, чтобы заменить корневое имя на ‘Центры обработки данных’. Варианты:
|
with_sanitized_property_name boolean | Этот параметр позволяет очистить имена свойств для создания безопасных имён свойств для использования в Ansible. Также преобразует имя свойства в нижний регистр с дефисами. Варианты:
|
with_tags boolean | Включить теги и связанные с ними виртуальные машины. Требуется библиотека 'vSphere Automation SDK' для установки на указанной машине контроллера. Пожалуйста, ознакомьтесь со следующими URL-адресами для шагов установки https://code.vmware.com/web/sdk/7.0/vsphere-automation-python Варианты:
|
Примеры
# 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"
Ссылки на сборку
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_vm_inventory_inventory.html