community.vmware.vmware_vm_inventory – Источник инвентаризации гостевых машин VMware
Примечание
Этот плагин входит в коллекцию community.vmware (версия 1.7.0).
Для установки используйте: 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.
Требования
Ниже перечислены требования к локальному узлу-контроллеру, который выполняет эту инвентаризацию.
- Python >= 2.7
- PyVmomi
- requests >= 2.3
- vSphere Automation SDK - Для функции тегов
Параметры
| Параметр | Варианты/Значения по умолчанию | Настройка | Комментарии |
|---|---|---|---|
| cache boolean |
| Входные данные ini: [inventory] Переменная среды:ANSIBLE_INVENTORY_CACHE | Переключатель для включения/отключения кеширования исходных данных инвентаризации. Требуется настройка плагина кеша для работы. |
| cache_connection строка | Входные данные ini: [defaults] [inventory] Переменная среды:ANSIBLE_CACHE_PLUGIN_CONNECTION Переменная среды:ANSIBLE_INVENTORY_CACHE_CONNECTION | Данные или путь подключения к кешу, подробную информацию см. в документации плагина кеша. | |
| cache_plugin строка | Значение по умолчанию: "memory" | Входные данные ini: [defaults] [inventory] Переменная среды:ANSIBLE_CACHE_PLUGIN Переменная среды:ANSIBLE_INVENTORY_CACHE_PLUGIN | Плагин кеша для использования с исходными данными инвентаризации. |
| cache_prefix строка | Значение по умолчанию: "ansible_inventory_" | Входные данные ini: [default] [inventory] Переменная среды:ANSIBLE_CACHE_PLUGIN_PREFIX Переменная среды:ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX | Префикс для использования в файлах/таблицах плагина кеша |
| cache_timeout целое число | Значение по умолчанию: 3600 | Входные данные ini: [defaults] [inventory] Переменная среды:ANSIBLE_CACHE_PLUGIN_TIMEOUT Переменная среды:ANSIBLE_INVENTORY_CACHE_TIMEOUT | Время хранения кеша в секундах |
| compose словарь | Значение по умолчанию: {} | Создать переменные из выражений jinja2. | |
| filters список / элементы=строка | Значение по умолчанию: [] | Этот параметр позволяет фильтровать хосты на стороне клиента с помощью шаблонирования jinja. При внедрении фильтрации на стороне сервера, следует отдавать предпочтение этому. | |
| groups словарь | Значение по умолчанию: {} | Добавить хосты в группу на основе условных выражений Jinja2. | |
| hostname строка / обязательно | Переменная среды:VMWARE_HOST Переменная среды:VMWARE_SERVER | Имя сервера vCenter или ESXi. | |
| hostnames список / элементы=строка | Значение по умолчанию: ["config.name + \"_\" + config.uuid"] | Список шаблонов в порядке приоритета для составления inventory_hostname. Игнорирует шаблон, если результат — пустая строка или значение None. Можно использовать свойства, указанные в properties, как переменные в шаблоне. | |
| keyed_groups список / элементы=строка | Значение по умолчанию: [{"key": "config.guestId", "separator": ""}, {"key": "summary.runtime.powerState", "separator": ""}] | Добавить хосты в группу на основе значений переменной. | |
| leading_separator boolean добавлено в 2.11 ansible.builtin |
| Используйте вместе с keyed_groups. По умолчанию, у группы, для которой не указан префикс или разделитель, имя начинается с подчеркивания. Это потому, что префикс по умолчанию — "" , а разделитель по умолчанию — "_". Установите этот параметр в False, чтобы опустить ведущее подчеркивание (или другой разделитель), если префикс не задан. Если имя группы получено из отображения, разделитель всё равно используется для конкатенации элементов. Для того, чтобы вообще не использовать разделитель в имени группы, установите разделитель для группы keyed в пустую строку. | |
| password строка / обязательно | Переменная среды:VMWARE_PASSWORD | Пароль пользователя vSphere. | |
| port целое число | Значение по умолчанию: 443 | Переменная среды:VMWARE_PORT | Номер порта, используемый для подключения к серверу vCenter или ESXi. |
| properties список / элементы=строка | Значение по умолчанию: ["name", "config.cpuHotAddEnabled", "config.cpuHotRemoveEnabled", "config.instanceUuid", "config.hardware.numCPU", "config.template", "config.name", "config.uuid", "guest.hostName", "guest.ipAddress", "guest.guestId", "guest.guestState", "runtime.maxMemoryUsage", "customValue", "summary.runtime.powerState", "config.guestId"] | Укажите список свойств схемы VMware, связанных с виртуальной машиной. Эти свойства будут заполнены в hostvars заданной виртуальной машины. Каждое значение в списке может быть путем к определенному свойству объекта виртуальной машины или путем к набору объектов виртуальных машин. config.name, config.uuid являются необходимыми свойствами, если hostnames установлено по умолчанию.config.guestId, summary.runtime.powerState необходимы, если keyed_groups установлено по умолчанию.Пожалуйста, убедитесь, что все свойства, используемые в других параметрах, включены в этом параметре. Помимо свойств виртуальной машины, следующие являются специальными значениями Используйте customValue для заполнения пользовательских атрибутов виртуальной машины. customValue поддерживается только vCenter, а не ESXi.Используйте all для заполнения всех свойств виртуальной машины. Значение all — это длительная операция, используйте только в крайнем случае.См. больше атрибутов гостевых машин VMware, которые могут быть использованы как свойства https://github.com/ansible/ansible/blob/devel/docs/docsite/rst/scenario_guides/vmware_scenarios/vmware_inventory_vm_attributes.rst
| |
| resources список / элементы=строка добавлено в 2.10 community.vmware | Значение по умолчанию: [] | Список ресурсов для ограничения области поиска. Каждый элемент ресурса представлен ровно одной парой 'vim_type_snake_case:list of resource names и необязательными вложенными resources
Имя ключа основано на змеином регистре имени типа vim; например, host_system соответствует vim.HostSystem
См. Типы VIM
| |
| strict boolean |
| Если yes сделать недопустимые записи ошибкой, иначе пропустить и продолжить.Так как можно использовать факты в выражениях, они могут не всегда быть доступны, и мы игнорируем эти ошибки по умолчанию. | |
| use_extra_vars boolean добавлено в 2.11 ansible.builtin |
| Входные данные ini: [inventory_plugins] Переменная среды:ANSIBLE_INVENTORY_USE_EXTRA_VARS | Объединить дополнительные переменные в доступные переменные для составления (высший приоритет). |
| username строка / обязательно | Переменная среды:VMWARE_USER Переменная среды:VMWARE_USERNAME | Имя пользователя vSphere. | |
| validate_certs boolean |
| Переменная среды:VMWARE_VALIDATE_CERTS | Разрешает подключение, когда сертификаты SSL недействительны. Установите в false, когда сертификаты не доверяются. |
| with_nested_properties boolean |
| Этот параметр преобразует имена плоских свойств во вложенный словарь. | |
| with_path boolean |
| Включать пути к виртуальным машинам. Установите этот параметр в строковое значение, чтобы заменить корневое имя из 'Центры данных'. | |
| with_sanitized_property_name boolean |
| Этот параметр позволяет очищать имена свойств для создания безопасных имён свойств для использования в Ansible. Также преобразует имя свойства в змеиный регистр. | |
| with_tags boolean |
| Включать теги и связанные виртуальные машины. Требуется библиотека 'vSphere Automation SDK' для установки на заданный контроллер. См. следующие ссылки для шагов установки |
Примеры
# 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
# 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'
# 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
with_tags: 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
with_tags: 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'
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"
Авторы
- Abhijeet Kasurde (@Akasurde)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/vmware/vmware_vm_inventory_inventory.html