- Introducción
- Requisitos del escenario
- Supuestos
- Advertencias
-
Descripción de ejemplo
- Que esperar
- Solución de problemas
Introducción
Esta guía le mostrará cómo utilizar Ansible para clonar una máquina virtual a partir de una plantilla VMware existente o un invitado VMware existente.
Requisitos del escenario
-
Software
- Se debe instalar Ansible 2.5 o posterior
- El módulo de Python
Pyvmomi
debe instalarse en Ansible (o en el host de destino si no se ejecuta contra el host local) - Instalación de la última
Pyvmomi
víapip
es recomendado [as the OS provided packages are usually out of date and incompatible]
-
Hardware
- vCenter Server con al menos un servidor ESXi
-
Acceso / Credenciales
- Ansible (o el servidor de destino) debe tener acceso de red al servidor vCenter o al servidor ESXi en el que se implementará
- Nombre de usuario y contraseña
-
Usuario administrador con los siguientes privilegios
Datastore.AllocateSpace
en el almacén de datos de destino o en la carpeta del almacén de datosNetwork.Assign
en la red a la que se asignará la máquina virtualResource.AssignVMToPool
en el host, clúster o grupo de recursos de destinoVirtualMachine.Config.AddNewDisk
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.AddRemoveDevice
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Interact.PowerOn
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Inventory.CreateFromExisting
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Provisioning.Clone
en la máquina virtual que está clonandoVirtualMachine.Provisioning.Customize
en la máquina virtual o en la carpeta de la máquina virtual si está personalizando el sistema operativo invitadoVirtualMachine.Provisioning.DeployTemplate
en la plantilla que estás usandoVirtualMachine.Provisioning.ReadCustSpecs
en el vCenter Server raíz si está personalizando el sistema operativo invitado
Dependiendo de sus requisitos, también podría necesitar uno o más de los siguientes privilegios:
VirtualMachine.Config.CPUCount
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.Memory
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.DiskExtend
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.Annotation
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.AdvancedConfig
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.EditDevice
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.Resource
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.Settings
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Config.UpgradeVirtualHardware
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Interact.SetCDMedia
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Interact.SetFloppyMedia
en el centro de datos o la carpeta de la máquina virtualVirtualMachine.Interact.DeviceConnection
en el centro de datos o la carpeta de la máquina virtual
Supuestos
- Todos los nombres de variables y de objetos de VMware distinguen entre mayúsculas y minúsculas
- VMware permite la creación de máquinas virtuales y plantillas con el mismo nombre en los centros de datos y dentro de los centros de datos.
- Necesita usar la versión Python 2.7.9 para poder usar
validate_certs
opción, ya que esta versión es capaz de cambiar los comportamientos de verificación SSL
Advertencias
- Los hosts del clúster de ESXi deben tener acceso al almacén de datos en el que reside la plantilla.
- Varias plantillas con el mismo nombre provocarán fallas en el módulo.
- Para utilizar la personalización de invitados, VMware Tools debe estar instalado en la plantilla. Para Linux, el
open-vm-tools
Se recomienda el paquete, y requiere quePerl
estar instalado.
Descripción de ejemplo
En este caso de uso / ejemplo, seleccionaremos una plantilla de máquina virtual y la clonaremos en una carpeta específica en nuestro centro de datos / clúster. El siguiente libro de jugadas de Ansible muestra los parámetros básicos que se necesitan para esto.
----name: Create a VM from a template hosts: localhost gather_facts: no tasks:-name: Clone the template vmware_guest:hostname:" vcenter_ip "username:" vcenter_username "password:" vcenter_password "validate_certs:Falsename: testvm_2 template: template_el7 datacenter:" datacenter_name "folder: /DC1/vm state: poweredon cluster:" cluster_name "wait_for_ip_address: yes
Dado que Ansible utiliza la API de VMware para realizar acciones, en este caso de uso nos conectaremos directamente a la API desde nuestro host local. Esto significa que nuestros libros de jugadas no se ejecutarán desde vCenter o ESXi Server. No es necesario que recopilemos datos sobre nuestro host local, por lo que gather_facts
El parámetro se desactivará. Puede ejecutar estos módulos en otro servidor que luego se conectaría a la API si su host local no tiene acceso a vCenter. Si es así, los módulos de Python requeridos deberán instalarse en ese servidor de destino.
Para empezar, necesitaremos algunos bits de información. Lo primero y más importante es el nombre de host del servidor ESXi o vCenter Server. Después de esto, necesitará el nombre de usuario y la contraseña de este servidor. Por ahora, los ingresará directamente, pero en un libro de jugadas más avanzado, esto se puede resumir y almacenar de una manera más segura usando bóveda-ansible o usando Credenciales de Ansible Tower. Si su vCenter o servidor ESXi no está configurado con los certificados de CA adecuados que se pueden verificar desde el servidor Ansible, entonces es necesario deshabilitar la validación de estos certificados mediante el validate_certs
parámetro. Para hacer esto necesitas configurar validate_certs=False
en su libro de jugadas.
Ahora debe proporcionar la información sobre la máquina virtual que se creará. Asigne un nombre a su máquina virtual, uno que cumpla con todos los requisitos de VMware para las convenciones de nomenclatura. A continuación, seleccione el nombre para mostrar de la plantilla desde la que desea clonar la nueva máquina virtual. Debe coincidir exactamente con lo que se muestra en la interfaz de usuario web de VMware. Luego, puede especificar una carpeta para colocar esta nueva máquina virtual. Esta ruta puede ser una ruta relativa o una ruta completa a la carpeta, incluido el centro de datos. Es posible que deba especificar un estado para la máquina virtual. Esto simplemente le dice al módulo qué acción desea realizar; en este caso, se asegurará de que la máquina virtual exista y esté encendida. Un parámetro opcional es wait_for_ip_address
, esto le indicará a Ansible que espere a que la máquina virtual se inicie por completo y VMware Tools se esté ejecutando antes de completar esta tarea.
Que esperar
- Verá un poco de salida JSON después de que se complete este manual. Esta salida muestra varios parámetros que se devuelven desde el módulo y desde vCenter sobre la máquina virtual recién creada.
"changed":true,"instance":"annotation":"","current_snapshot":null,"customvalues":,"guest_consolidation_needed":false,"guest_question":null,"guest_tools_status":"guestToolsNotRunning","guest_tools_version":"0","hw_cores_per_socket":1,"hw_datastores":["ds_215"],"hw_esxi_host":"192.0.2.44","hw_eth0":"addresstype":"assigned","ipaddresses":null,"label":"Network adapter 1","macaddress":"00:50:56:8c:19:f4","macaddress_dash":"00-50-56-8c-19-f4","portgroup_key":"dvportgroup-17","portgroup_portkey":"0","summary":"DVSwitch: 50 0c 5b 22 b6 68 ab 89-fc 0b 59 a4 08 6e 80 fa","hw_files":["[ds_215] testvm_2/testvm_2.vmx","[ds_215] testvm_2/testvm_2.vmsd","[ds_215] testvm_2/testvm_2.vmdk"],"hw_folder":"/DC1/vm","hw_guest_full_name":null,"hw_guest_ha_state":null,"hw_guest_id":null,"hw_interfaces":["eth0"],"hw_is_template":false,"hw_memtotal_mb":512,"hw_name":"testvm_2","hw_power_status":"poweredOff","hw_processor_count":2,"hw_product_uuid":"420cb25b-81e8-8d3b-dd2d-a439ee54fcc5","hw_version":"vmx-13","instance_uuid":"500cd53b-ed57-d74e-2da8-0dc0eddf54d5","ipv4":null,"ipv6":null,"module_hw":true,"snapshots":[],"invocation":"module_args":"annotation":null,"cdrom":,"cluster":"DC1_C1","customization":,"customization_spec":null,"customvalues":[],"datacenter":"DC1","disk":[],"esxi_hostname":null,"folder":"/DC1/vm","force":false,"guest_id":null,"hardware":,"hostname":"192.0.2.44","is_template":false,"linked_clone":false,"name":"testvm_2","name_match":"first","networks":[],"password":"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER","port":443,"resource_pool":null,"snapshot_src":null,"state":"present","state_change_timeout":0,"template":"template_el7","username":"[email protected]","uuid":null,"validate_certs":false,"vapp_properties":[],"wait_for_ip_address":true
- El estado se cambia a
True
que notifica que la máquina virtual se construyó usando la plantilla dada. El módulo no se completará hasta que finalice la tarea de clonación en VMware. Esto puede llevar algún tiempo dependiendo de su entorno. - Si utiliza el
wait_for_ip_address
, luego también aumentará el tiempo de clonación, ya que esperará hasta que la máquina virtual se inicie en el sistema operativo y se haya asignado una dirección IP a la NIC determinada.
Solución de problemas
Cosas para inspeccionar
- Compruebe si los valores proporcionados para el nombre de usuario y la contraseña son correctos
- Compruebe si el centro de datos que proporcionó está disponible
- Compruebe si la plantilla especificada existe y tiene permisos para acceder al almacén de datos
- Asegúrese de que la ruta completa de la carpeta que especificó ya existe. No creará carpetas automáticamente para ti.
Aquí puedes ver las reseñas y valoraciones de los lectores
Eres capaz de añadir valor a nuestro contenido contribuyendo tu experiencia en las notas.