Por fin después de tanto batallar ya dimos con la contestación de este enigma que algunos los lectores de este espacio tienen. Si deseas compartir algún dato no dudes en aportar tu información.
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 |
|
entradas ini:
[inventory] 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] [inventory] 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] [inventory] 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] [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] [inventory] 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 |
|
Ú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.HostSystem Ver Tipos de VIM |
|
estrictobooleano |
|
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 |
|
entradas ini:
[inventory_plugins] 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 |
|
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 |
|
Esta opción transforma el nombre de las propiedades de aplanar en un diccionario anidado. | |
with_pathbooleano |
|
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 |
|
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 |
|
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)