Este repositorio contiene una serie de scripts para facilitar la gestión de máquinas virtuales (VMs) a través de la API de vSphere utilizando la herramienta govc.
- VMware vSphere/ESXi
govcinstalado (Instrucciones de instalación)jqinstalado para el procesamiento de JSON- Variables de entorno configuradas para la conexión a vSphere:
export GOVC_URL=https://vCenter-server/sdk export GOVC_USERNAME=usuario export GOVC_PASSWORD=contraseña export GOVC_INSECURE=true # Para entornos sin SSL verificado
Un script para consultar información detallada sobre máquinas virtuales.
Uso: ./consulta.sh [OPCIÓN]
Script para obtener información de VMs en vCenter usando govc.
Opciones:
--ip IP1,IP2,... Muestra información de las VMs con las IPs especificadas
--hn HOST1,HOST2,... Muestra información de las VMs con los nombres especificados
-g PATRÓN Subopción para --hn: busca VMs cuyo nombre coincida con el patrón mediante grep
--net RED Muestra las VMs que utilizan la red especificada
--all Exporta información de todas las VMs a archivos JSON (comportamiento por defecto)
--help Muestra esta ayuda
--json-dir DIR Directorio donde buscar/guardar archivos JSON pre-exportados (por defecto: /tmp/vm_info)
Exportar información de todas las VMs:
./consulta.sh --allMostrar información de una VM específica:
./consulta.sh --hn webserver01Buscar VMs por patrón de nombre:
./consulta.sh --hn -g "db-*"Mostrar VMs que usan una red específica:
./consulta.sh --net "Production-LAN"Mostrar información de una VM por IP:
./consulta.sh --ip 192.168.1.100Usar un directorio personalizado para los archivos JSON:
./consulta.sh --all --json-dir /ruta/personalizadaUn script para clonar máquinas virtuales utilizando la información exportada por consulta.sh.
Uso: ./clone.sh [OPCIONES]
Script para clonar máquinas virtuales usando govc basado en información JSON pre-exportada.
Opciones:
--hn NOMBRE Nombre de la VM existente a clonar
--nhn NOMBRE Nombre para la nueva VM clonada
--power on|off Encender la VM después de clonarla (por defecto: off)
--map-networks SRC:DST Mapear redes, formato 'red_origen:red_destino'
Se pueden usar espacios en los nombres de red usando comillas
--ds DATASTORE Nombre del datastore donde se creará la VM clonada
Si no se especifica, se usará el mismo datastore que la VM original
--pool RESOURCEPOOL Nombre del resource pool donde se creará la VM clonada
Si no se especifica, se intentará detectar automáticamente
--json-dir DIR Directorio donde buscar archivos JSON pre-exportados (por defecto: /tmp/vm_info)
--dry Modo simulación: muestra los comandos que se ejecutarían sin realizar cambios
--export-script RUTA Ruta al script de exportación (por defecto: ./consulta.sh)
--help Mostrar esta ayuda
Nota: La VM original NO se apagará y permanecerá intacta durante todo el proceso.
Si el directorio de exportación no existe, se ejecutará automáticamente el script
de exportación para crearlo. Después de la clonación, se exportará la información
de la nueva VM.
Clonar una VM básica:
./clone.sh --hn webserver01 --nhn webserver02Clonar una VM y encenderla automáticamente:
./clone.sh --hn webserver01 --nhn webserver02 --power onClonar VM en un datastore específico:
./clone.sh --hn webserver01 --nhn webserver02 --ds ssd-datastore-01Clonar VM en un resource pool específico:
./clone.sh --hn webserver01 --nhn webserver02 --pool "Production"Clonar VM y cambiar su red:
./clone.sh --hn webserver01 --nhn webserver02 --map-networks "Production-LAN:Test-LAN"Simular clonación (modo dry-run):
./clone.sh --hn webserver01 --nhn webserver02 --dry# 1. Exportar información de todas las VMs
./consulta.sh --all --json-dir /tmp/inventory
# 2. Listar todas las VMs en la red de producción
./consulta.sh --net "Production-LAN" --json-dir /tmp/inventory
# 3. Buscar todas las VMs de bases de datos
./consulta.sh --hn -g "db" --json-dir /tmp/inventory# 1. Exportar información de la VM original
./consulta.sh --hn webserver-prod --json-dir /tmp/vm_info
# 2. Clonar la VM a un entorno de pruebas
./clone.sh --hn webserver-prod --nhn webserver-test --map-networks "Production-LAN:Test-LAN" --json-dir /tmp/vm_info
# 3. Verificar la información de la nueva VM
./consulta.sh --hn webserver-test --json-dir /tmp/vm_info-
Permisos: Asegúrate de tener los permisos adecuados en vCenter para realizar estas operaciones.
-
Archivos JSON: Los scripts dependen de archivos JSON exportados para funcionar correctamente. Si eliminas estos archivos, deberás ejecutar nuevamente el comando
--allpara recrearlos. -
Datastore y Resource Pool: Si no se especifican, los scripts intentarán detectarlos automáticamente. En entornos complejos, es recomendable especificar estos valores manualmente.
-
Respaldos: Siempre realiza respaldos o snapshots antes de realizar operaciones de clonación masiva.
govc: ServerFaultCode: Cannot complete login due to an incorrect user name or password.
Verifica las variables de entorno GOVC_USERNAME y GOVC_PASSWORD.
govc: default resource pool resolves to multiple instances, please specify
Usa el parámetro --pool para especificar un resource pool explícitamente.
govc: default datastore resolves to multiple instances, please specify
Usa el parámetro --ds para especificar un datastore explícitamente.
Siéntete libre de contribuir a estos scripts, reportar problemas o sugerir mejoras.