Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Scripts de Gestión de VMs con govc

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.

Requisitos previos

  • VMware vSphere/ESXi
  • govc instalado (Instrucciones de instalación)
  • jq instalado 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
    

Scripts disponibles

1. consulta.sh

Un script para consultar información detallada sobre máquinas virtuales.

Opciones

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)

Ejemplos de uso

Exportar información de todas las VMs:

./consulta.sh --all

Mostrar información de una VM específica:

./consulta.sh --hn webserver01

Buscar 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.100

Usar un directorio personalizado para los archivos JSON:

./consulta.sh --all --json-dir /ruta/personalizada

2. clone.sh

Un script para clonar máquinas virtuales utilizando la información exportada por consulta.sh.

Opciones

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.

Ejemplos de uso

Clonar una VM básica:

./clone.sh --hn webserver01 --nhn webserver02

Clonar una VM y encenderla automáticamente:

./clone.sh --hn webserver01 --nhn webserver02 --power on

Clonar VM en un datastore específico:

./clone.sh --hn webserver01 --nhn webserver02 --ds ssd-datastore-01

Clonar 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

Ejemplos de flujo de trabajo

Escenario 1: Inventario y documentación

# 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

Escenario 2: Clonación para pruebas

# 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

Notas importantes

  1. Permisos: Asegúrate de tener los permisos adecuados en vCenter para realizar estas operaciones.

  2. Archivos JSON: Los scripts dependen de archivos JSON exportados para funcionar correctamente. Si eliminas estos archivos, deberás ejecutar nuevamente el comando --all para recrearlos.

  3. Datastore y Resource Pool: Si no se especifican, los scripts intentarán detectarlos automáticamente. En entornos complejos, es recomendable especificar estos valores manualmente.

  4. Respaldos: Siempre realiza respaldos o snapshots antes de realizar operaciones de clonación masiva.

Resolución de problemas

Error de autenticación

govc: ServerFaultCode: Cannot complete login due to an incorrect user name or password.

Verifica las variables de entorno GOVC_USERNAME y GOVC_PASSWORD.

Error de resource pool

govc: default resource pool resolves to multiple instances, please specify

Usa el parámetro --pool para especificar un resource pool explícitamente.

Error de datastore

govc: default datastore resolves to multiple instances, please specify

Usa el parámetro --ds para especificar un datastore explícitamente.

Contribución

Siéntete libre de contribuir a estos scripts, reportar problemas o sugerir mejoras.

About

Tools for sysadmins

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages