Sinceramente, configurar Ansible para la gestión de VMware no es precisamente sencillo, sobre todo si eres nuevo en scripting o simplemente quieres gestionar tus hosts sin tener que acceder constantemente al cliente vSphere. Pero una vez que le pilles el truco, automatizar tareas como la implementación de máquinas virtuales, la comprobación de versiones o el inicio/detención de servicios puede ahorrarte muchísimo tiempo. Un aviso: configurarlo todo al principio es un poco complicado, pero si sigues los pasos correctos, verás que gestionar varios hosts ESXi o vCenter con un solo comando o playbook es bastante sencillo. Al final, podrás hacer cosas como encender máquinas virtuales o habilitar servicios en tus hosts sin tener que navegar sin parar por la interfaz gráfica web. Dicho esto, prepárate para escanear, editar configuraciones y quizás un poco de esfuerzo, porque, claro, la API de VMware no es muy intuitiva de fábrica.
Cómo automatizar tareas de VMware con Ansible
Asegúrese de que Python y pyVmomi estén instalados
- En tu máquina Linux de control, instala pyVmomi, el SDK de Python del que dependen los módulos de VMware. Normalmente, solo ejecuta
$ sudo pip install pyvmomi. He visto que falla un par de veces en distribuciones antiguas donde pip no se actualiza, así que actualiza pip primero si es necesario. - Asegúrese de que Ansible también esté configurado: muchas distribuciones lo tienen en sus repositorios, pero la última versión suele ser mejor.
Configurar ansible.cfg para habilitar el complemento de inventario de VMware
- Aquí es donde se le indica a Ansible que reconozca el complemento de VMware. Abra /etc/ansible/ansible.cfg y agregue o confirme la línea:
[inventario] enable_plugins = vmware_vm_inventory, lista_de_hosts, script, automático, yaml, ini, toml
/etc/ansible/vmware/vmware.yml) con los datos de tu vCenter o ESXi. Aquí es donde suele fallar todo: debes indicarle a Ansible cómo conectarse:--- complemento: vmware_vm_inventory estricto: Falso nombre de host: 192.168.13.70 nombre de usuario: [email protected] contraseña: pas1swsew43 validate_certs: Falso with_tags: Verdadero
Consejo: configure validate_certs en Falso si está usando certificados autofirmados; de lo contrario, no se podrá autenticar.
Enumere sus máquinas virtuales y sus hosts ESXi
- Para ver todas sus máquinas virtuales, ejecute:
$ ansible-inventory --list -i /etc/ansible/vmware/vmware.yml
$ ansible-inventory --graph -i /etc/ansible/vmware/vmware.yml
Útil para verificar que tu archivo de inventario funciona y que te estás comunicando con los servidores correctos. Advertencia: A veces, el comando de inventario falla si tus credenciales o red son inestables. Simplemente vuelve a ejecutarlo después de corregir los problemas de SSH restantes o las advertencias de certificado.
Agregar sus hosts ESXi a /etc/ansible/hosts
- La mayoría de la gente prefiere agregarlos de la siguiente manera:
[todos los hosts esxi] esxi1 ansible_host=192.168.31.20 esxi2 ansible_host=192.168.31.21 esxi3 ansible_host=192.168.31.22
[todos_los_hosts_esxi:vars] usuario_ansible=raíz intérprete_de_ansible_python=/bin/python contraseña_ssh_ansible=P1ssw0rd6
Atención: la contraseña está en texto plano, lo cual no es ideal. Para mayor seguridad, configura claves SSH en tus hosts ESXi, pero eso es otro tema.
Probar la conectividad
- Asegúrese de que todos los hosts respondan a través de la red:
$ ansible all_esxi_hosts -m ping
--ask-passbandera la próxima vez, o la autenticación de clave SSH hará que las cosas sean menos complicadas.Aquí es donde obtienes esa tranquilizadora verificación «OK» de que tu red y credenciales son sólidas.
Ejecutar comandos en todos los hosts ESXi
- ¿Tienes curiosidad por tu versión de ESXi? Simplemente ejecuta:
$ ansible all_esxi_hosts -m shell -a "vmware -vl"
Automatizar las operaciones de máquinas virtuales con playbooks
- Aquí tienes un ejemplo de playbook vm_start.yml para encender una máquina virtual llamada «munfs01» en vCenter. Asegúrate de que tus credenciales en vmware_vars.yml sean correctas y de que hayas instalado la colección community.vmware.
- nombre: iniciar vm hosts: localhost recopilar_hechos: falso colecciones: - comunidad.vmware archivos vars: - vmware_vars.yml tareas: - nombre: encendido estado de energía del invitado de vmware: nombre de host: "{{ nombre de host }}" nombre de usuario: "{{ nombre de usuario }}" contraseña: "{{ contraseña }}" nombre: munfs01 validar_certificados: "{{ validar_certificados }}" estado: encendido
Ejecútalo con $ ansible-playbook /etc/ansible/vmware/vm_start.yml. Luego, revisa tu cliente vSphere: tu máquina virtual debería estar iniciada.¿Hay algo sin cambios? Simplemente revisa los registros o las configuraciones de red; si no sucede nada, quizás tengas que solucionar el problema.
Habilite servicios en ESXi en un instante
- A continuación se muestra un fragmento útil de manual de estrategias para activar NTP en hosts ESXi:
--- - hosts: localhost cuyo: nombre_de_host_vcenter: "192.168.31.20" vcenter_user: [email protected] contraseña_del_vcenter: passwprd123 nombre de host esxi: 192.168.31.50 esxi_username: raíz contraseña_esxi: es-122023 tareas: - nombre: Iniciar servicio NTP comunidad.vmware.vmware_host_service_manager: nombre de host: "{{ vcenter_hostname }}" nombre de usuario: "{{ vcenter_user }}" contraseña: "{{ vcenter_password }}" esxi_hostname: "{{ esxi_hostname }}" nombre_del_servicio: ntpd estado: presente política_de_servicio: desactivada validar_certificados: no delegado_a: localhost
Ejecútalo con $ ansible-playbook /etc/ansible/vmware/vm_esxi_start_service.yml. Aviso: la versión gratuita de VMware Hypervisor (ESXi free) tiene acceso limitado a la API, por lo que algunas funciones no funcionarán desde Ansible, como cambiar las licencias o ciertas configuraciones avanzadas.
Notas adicionales
Configurarlo todo requiere un poco de paciencia. Recuerda que las API no siempre son perfectas, y VMware parece tener cierta incertidumbre sobre qué se puede modificar con la versión gratuita. Pero una vez que funciona, automatizar tareas rutinarias es bastante adictivo. Eso sí, no esperes un milagro con un solo clic. Para automatizaciones más complejas, consulta el repositorio de GitHub: Winhance.
Con suerte, esto te ahorrará algunas horas en la gestión de tus recursos de VMware. No hay nada mejor que tener un buen manual de estrategias listo para usar cuando lo necesites.
Resumen
- Instale pyVmomi y configure su ansible.cfg
- Configurar el inventario de VMware y verificar la conexión
- Agregue sus hosts ESXi a su inventario
- Ejecutar comandos o playbooks para administrar máquinas virtuales y servicios
- Tenga en cuenta la seguridad: prefiera las claves SSH a las contraseñas simples
Resumen
Una vez configurada la aplicación, administrar varios hosts ESXi y máquinas virtuales con Ansible puede simplificarte mucho la vida. No es perfecto, y a veces la API de VMware parece…limitada, especialmente con la versión gratuita. Pero en general, vale la pena el esfuerzo si te apasiona la automatización. Solo prepárate para un poco de prueba y error, y quizás un par de momentos de desconcierto. Ojalá esto ayude a alguien a ahorrarse algunas horas o a evitarse un dolor de cabeza en el futuro.