Nota

Este complemento es parte del colección community.vmware (versión 1.7.0).

Para instalarlo use: ansible-galaxy collection install community.vmware.

Para usarlo en un libro de jugadas, especifique: community.vmware.vmware_vm_inventory.

  • Sinopsis
  • Requisitos
  • Parámetros
  • Ejemplos de

Sinopsis

  • Obtenga máquinas virtuales como hosts de inventario desde el entorno de VMware.
  • Utiliza cualquier archivo que termine con vmware.yml, vmware.yaml, vmware_vm_inventory.yml o vmware_vm_inventory.yaml como archivo de configuración YAML.

Requisitos

Los siguientes requisitos son necesarios en el nodo del controlador local que ejecuta este inventario.

  • Python> = 2.7
  • PyVmomi
  • solicitudes> = 2.3
  • SDK de vSphere Automation: para la función de etiqueta

Parámetros

Parámetro Opciones / Valores predeterminados Configuración Comentarios
cachebooleano
    Opciones:

  • no
entradas ini:

[inventory]
cache = no

env: ANSIBLE_INVENTORY_CACHE

Alternar para habilitar / deshabilitar el almacenamiento en caché de los datos de origen del inventario, requiere una configuración de complemento de caché para funcionar.
cache_connectioncuerda entradas ini:

[defaults]
fact_caching_connection = Ninguno

[inventory]
cache_connection = Ninguno

env: ANSIBLE_CACHE_PLUGIN_CONNECTION env: ANSIBLE_INVENTORY_CACHE_CONNECTION

Almacene en caché los datos de conexión o la ruta, lea la documentación del complemento de caché para obtener más detalles.
cache_plugincuerda Defecto:
“memoria”
entradas ini:

[defaults]
fact_caching = memoria

[inventory]
cache_plugin = memoria

env: ANSIBLE_CACHE_PLUGIN env: ANSIBLE_INVENTORY_CACHE_PLUGIN

Complemento de caché para usar con los datos de origen del inventario.
prefijo_cachécuerda Defecto:
“ansible_inventory_”
entradas ini:

[default]
fact_caching_prefix = ansible_inventory_

[inventory]
cache_prefix = ansible_inventory_

env: ANSIBLE_CACHE_PLUGIN_PREFIX env: ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX

Prefijo que se utilizará para los archivos / tablas del complemento de caché
cache_timeoutentero Defecto:
3600
entradas ini:

[defaults]
fact_caching_timeout = 3600

[inventory]
cache_timeout = 3600

env: ANSIBLE_CACHE_PLUGIN_TIMEOUT env: ANSIBLE_INVENTORY_CACHE_TIMEOUT

Duración de la caché en segundos
componerdiccionario Defecto: Crea vars a partir de expresiones jinja2.
filtroslista / elementos = cadena Defecto:
[]
Esta opción permite filtrar hosts del lado del cliente con plantillas jinja. Cuando se introduce el filtrado del lado del servidor, debe preferirse a este.
gruposdiccionario Defecto: Agregue hosts al grupo según los condicionales de Jinja2.
nombre de hostcuerda / requerido env: VMWARE_HOST env: VMWARE_SERVER Nombre de vCenter o servidor ESXi.
nombres de hostlista / elementos = cadena Defecto:
[“config.name + “_” + config.uuid”]
Una lista de plantillas en orden de precedencia para componer el nombre de host de inventario. Ignora la plantilla si resultó en una cadena vacía o un valor Ninguno. Puede usar la propiedad especificada en propiedades como variables en la plantilla.
keyed_groupslista / elementos = cadena Defecto:
[“key”: “config.guestId”, “separator”: “”, “key”: “summary.runtime.powerState”, “separator”: “”]
Agregue hosts al grupo según los valores de una variable.
separador_principalbooleano agregado en 2.11 de ansible.builtin
    Opciones:

  • no
Úselo junto con keyed_groups. De forma predeterminada, un grupo con clave que no tiene un prefijo o un separador provisto tendrá un nombre que comienza con un guión bajo. Esto se debe a que el prefijo predeterminado es “” y el separador predeterminado es “_”. Establezca esta opción en False para omitir el subrayado inicial (u otro separador) si no se proporciona ningún prefijo.Si el nombre del grupo se deriva de una asignación, el separador aún se usa para concatenar los elementos.Para no usar un separador en el nombre del grupo en all, establezca el separador para el grupo con clave en una cadena vacía en su lugar.
contraseñacuerda / requerido env: VMWARE_PASSWORD Contraseña del usuario de vSphere.
Puertoentero Defecto:
443
env: VMWARE_PORT Número de puerto utilizado para conectarse a vCenter o ESXi Server.
propiedadeslista / elementos = cadena Defecto:
[“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”]
Especifique la lista de propiedades del esquema de VMware asociadas con la VM. Estas propiedades se completarán en las variables de host de la VM dada. Cada valor en la lista puede ser una ruta a una propiedad específica en un objeto de VM o una ruta a una colección de objetos de VM.config.name, config.uuid son propiedades obligatorias si hostnames está configurado por defecto.config.guestId, summary.runtime.powerState son necesarios si keyed_groups está configurado como predeterminado.Asegúrese de que todas las propiedades que se utilizan en otros parámetros estén incluidas en estas opciones.Además de las propiedades de la máquina virtual, los siguientes son valores especialesUse customValue para completar los atributos personalizados de la máquina virtual. customValue solo es compatible con vCenter y no con ESXi. all para completar todas las propiedades de la máquina virtual. El valor all es una operación que requiere mucho tiempo, no lo use a menos que sea absolutamente necesario. Consulte más atributos de invitado de VMware que se pueden usar como propiedades https://github.com/ansible/ansible/blob/devel/docs/docsite/rst/scenario_guides/vmware_scenarios/vmware_inventory_vm_attributes.rst
recursoslista / elementos = cadena agregado en 2.10 de community.vmware Defecto:
[]
Una lista de recursos para limitar el alcance de la búsqueda.Cada elemento de recurso está representado exactamente por uno. 'vim_type_snake_case:list of resource names par y anidado opcional recursosEl nombre de la clave se basa en el caso de serpiente de un nombre de tipo vim; p.ej host_system corresponden a las vim.HostSystemVer Tipos de VIM
estrictobooleano
    Opciones:

  • no
Si yes haga que las entradas no válidas sean un error fatal, de lo contrario, omita y continúe. Dado que es posible usar hechos en las expresiones, es posible que no siempre estén disponibles e ignoramos esos errores de forma predeterminada.
use_extra_varsbooleano agregado en 2.11 de ansible.builtin
    Opciones:

  • no
entradas ini:

[inventory_plugins]
use_extra_vars = no

env: ANSIBLE_INVENTORY_USE_EXTRA_VARS

Fusionar variables adicionales en las variables disponibles para la composición (prioridad más alta).
nombre de usuariocuerda / requerido env: VMWARE_USER env: VMWARE_USERNAME Nombre del usuario de vSphere.
validate_certsbooleano
    Opciones:

  • no
env: VMWARE_VALIDATE_CERTS Permite la conexión cuando los certificados SSL no son válidos. false cuando los certificados no son de confianza.
with_nested_propertiesbooleano
    Opciones:

  • no
Esta opción transforma el nombre de las propiedades de aplanar en un diccionario anidado.
with_pathbooleano
    Opciones:

  • no
Incluir la ruta de las máquinas virtuales: establezca esta opción en un valor de cadena para reemplazar el nombre raíz de ‘Centros de datos’.
with_sanitized_property_namebooleano
    Opciones:

  • no
Esta opción permite la desinfección del nombre de la propiedad para crear nombres de propiedad seguros para usar en Ansible. Además, transforma el nombre de la propiedad en caso de serpiente.
con etiquetasbooleano
    Opciones:

  • no
Incluya etiquetas y máquinas virtuales asociadas.Requiere que se instale la biblioteca ‘vSphere Automation SDK’ en la máquina controladora dada.Consulte las siguientes URL para conocer los pasos de instalaciónhttps://code.vmware.com/web/sdk/7.0/vsphere-automation-python

Ejemplos de

# Sample configuration file for VMware Guest dynamic inventoryplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.223.31
    username:[email protected]password:[email protected]$%
    validate_certs:Falsewith_tags:True# Gather minimum set of properties for VMware guestplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.223.31
    username:[email protected]password:[email protected]$%
    validate_certs:Falseproperties:-'name'-'guest.ipAddress'-'config.name'-'config.uuid'# Create Groups based upon VMware Tools statusplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.223.31
    username:[email protected]password:[email protected]$%
    validate_certs:Falsewith_tags:Falseproperties:-'name'-'config.name'-'guest.toolsStatus'-'guest.toolsRunningStatus'hostnames:- config.name
    keyed_groups:-key: guest.toolsStatus
      separator:''-key: guest.toolsRunningStatus
      separator:''# Filter VMs based upon conditionplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.223.31
    username:[email protected]password:[email protected]$%
    validate_certs:Falseproperties:-'runtime.powerState'-'config.name'filters:- runtime.powerState == "poweredOn"
    hostnames:- config.name

# Filter VM's based on OR conditionsplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.223.31
    username:[email protected]password:[email protected]$%
    validate_certs:Falseproperties:-'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 conditionsplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.223.31
    username:[email protected]password:[email protected]$%
    validate_certs:Falseproperties:-'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 groupsplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.223.31
    username:[email protected]password:[email protected]$%
    validate_certs:Falsewith_tags:Falseproperties:-'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 machineansible_host:'guest.ipAddress'composed_var:'config.name'groups:VMs:Truehostnames:- config.name

# Use Datacenter, Cluster and Folder value to list VMsplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.200.241
    username:[email protected]password:[email protected]$%
    validate_certs:Falsewith_tags:Trueresources:-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 Tagplugin: community.vmware.vmware_vm_inventory
    strict:Falsehostname: 10.65.201.128
    username:[email protected]password:[email protected]$%
    validate_certs:Falsehostnames:-'config.name'properties:-'config.name'-'config.guestId'-'guest.ipAddress'-'summary.runtime.powerState'with_tags:Truekeyed_groups:-key: tag_category.OS
      prefix:"vmware_tag_os_category_"separator:""with_nested_properties:Truefilters:-"tag_category.OS is defined and 'Linux' in tag_category.OS"

Autores

  • Abhijeet Kasurde (@Akasurde)