Agrupación por lotes de la detección de invitados y la recogida de datos


En este tutorial se explica cómo descubrir y recoger datos de un lote de instancias de máquina virtual (VM) de VMware mediante la CLI de Discovery Client de Migration Center. Puede ser difícil monitorizar y solucionar problemas de grandes lotes de máquinas virtuales. Te recomendamos que los agrupes en lotes más pequeños de menos de 1000.

Objetivos

En este tutorial aprenderás a:

  • Descarga la CLI mcdc.
  • Ejecuta un descubrimiento de inventario de VMware.
  • Genera un archivo CSV con todas las máquinas virtuales detectadas.
  • Divide el archivo CSV en varios archivos CSV que contengan un subconjunto de las máquinas virtuales.
  • Ejecuta la detección de invitados en todas las máquinas virtuales de un archivo CSV.
  • Genera un informe de evaluación sin conexión.

Costes

En este tutorial se usan recursos locales y no se incurre en ningún coste. Google Cloud

Antes de empezar

  1. Prepara un equipo Linux para instalar y ejecutar la CLI de mcdc. El dispositivo Linux debe cumplir los siguientes requisitos mínimos:

    • glibc versión 2.25 o posterior
    • 4 GB de RAM y 10 GB de espacio en disco
    • Conectividad de red a vCenter y a los hosts ESX
  2. Asegúrate de que tienes un usuario de vSphere con los permisos necesarios:

    • Privilegios de lectura de las VMs
    • Privilegios de lectura en todos los hosts ESX
    • Modificaciones de operaciones de invitado
    • Ejecución del programa de operaciones de invitado
    • Consultas de operaciones de invitados

Descargar la CLI de mcdc

  1. Conéctate al equipo Linux:
    ssh MACHINE_IP

    Sustituye MACHINE_IP por la dirección IP de tu máquina Linux.

  2. Descarga la versión más reciente de la CLI de mcdc y haz que sea ejecutable:
      curl -O "https://mcdc-release.storage.googleapis.com/$(curl -s https://mcdc-release.storage.googleapis.com/latest)/mcdc"
      chmod +x mcdc
  3. Añade la CLI de mcdc a la ruta de tu shell:
    PATH=$PATH:`pwd`

Realizar un descubrimiento de inventario de VMware

  • Ejecuta el descubrimiento de inventario:

    ./mcdc discover vsphere -u USERNAME --url https://VSPHERE_URL
    

    Haz los cambios siguientes:

    • USERNAME: tu nombre de usuario de vCenter
    • VSPHERE_URL: la URL de su instancia de vCenter Server o de vSphere Client.

    El resultado del comando discover es similar al siguiente:

    [+] Found 528 VMs
    Collecting data...
    528 / 528 [---------------------------------------------------] 100.00% 5 p/s
    [✓] Collection completed.
    

Generar un archivo CSV con todas las máquinas virtuales detectadas

Para generar un archivo CSV, usa la secuencia de comandos export del repositorio Migrate to Containers en GitHub.


vms=$(mcdc report --format csv | tail -n +2 | awk -F ',' '{; print $2";"$3";"$4";;;"}')
printf "%s\n" "Name;Platform VM ID;OS Family;IP;USERNAME;PASSWORD"
printf "%s\n" "$vms"

La secuencia de comandos usa el comando report para generar un archivo CSV que contenga todas las máquinas virtuales que se han descubierto en el paso anterior.

  1. Descarga la secuencia de comandos:

    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/mcdc_discovery_export_guest_tools.sh
    chmod +x mcdc_discovery_export_guest_tools.sh
    
  2. Ejecuta la secuencia de comandos y guarda el resultado en un archivo:

    ./mcdc_discovery_export_guest_tools.sh > VMS_CSV_FILE
    

    Sustituye VMS_CSV_FILE por el nombre que quieras asignar al archivo CSV.

Divide el archivo CSV en varios archivos CSV con un subconjunto de las máquinas virtuales

Para dividir el archivo CSV de gran tamaño en archivos CSV más pequeños, usa la secuencia de comandos splitter del repositorio Migrate to Containers en GitHub.

tail -n +2 $1 | split -d -l $num_of_lines - $2
for file in $2*
do
    head -n 1 $1 > tmp_file
    cat "$file" >> tmp_file
    mv -f tmp_file "$file"
done
  1. Descarga la secuencia de comandos:

    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/csv_splitter.sh
    chmod +x csv_splitter.sh
    
  2. Ejecuta la secuencia de comandos:

    ./csv_splitter.sh VMS_CSV_FILE CSV_FILES_PREFIX LINES_PER_FILE VMS_CSV_FILE CSV_FILES_PREFIX
    

    Haz los cambios siguientes:

    • VMS_CSV_FILE: el archivo CSV de entrada que se va a dividir.
    • CSV_FILES_PREFIX: el prefijo de los archivos CSV generados.
    • LINES_PER_FILE: número de líneas por archivo CSV generado. El valor predeterminado es 10.

    La secuencia de comandos genera varios archivos CSV.

  3. Para ver la lista de archivos CSV generados, sigue estos pasos:

    ls -lrt CSV_FILES_PREFIX*
    

Ejecutar la detección de invitados en todas las máquinas virtuales de un archivo CSV

Para ejecutar la detección de invitados en las VMs de un archivo CSV, usa la secuencia de comandos collection del repositorio de GitHub de Migrate to Containers.

Repita este paso con cada archivo CSV generado en el paso anterior.


url_regex='^https?://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]\.[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]$'

read -r -p "CSV file name: " CSV_FILE
if [[ ! -r "$CSV_FILE" ]]; then
    echo "The file $CSV_FILE does not exist or can not be accessed."
    exit 1
fi

read -r -p "vSphere URL: " VSPHERE_URL
if ! [[ $VSPHERE_URL =~ $url_regex ]]; then
    echo "vSphere URL $VSPHERE_URL IS not a valid URL"
    exit 1
fi
read -r -p "vSphere username: " VSPHERE_USER
read -r -s -p "vSphere password: " VSPHERE_PASSWORD
echo ""
read -r -p "Default username: " DEFAULT_USER
read -r -s -p "Default password: " DEFAULT_PASSWORD

echo ""

# CSV fields
#NAME;PLATFORM VM ID;OS;IP;USERNAME;PASSWORD
while IFS=";" read -r vm_name vm_id os ip username password
do
   if [ -z "$username" ]
    then
      username=$DEFAULT_USER
    fi
    if [ -z "$password" ]
    then
          password=$DEFAULT_PASSWORD
    fi

    if [ ! -z "$vm_id" ]
    then
      # Note that the below only works for VMWare VMs
      # vm_id after the last slash if prefixed by vSphere IP
      mod_vm_id=$(echo "$vm_id" | sed 's/.*\///')
      mcdc discover vsphere guest --url $VSPHERE_URL -u $VSPHERE_USER -p $VSPHERE_PASSWORD --vm-user $username --vm-password $password $mod_vm_id
    else
      echo "Skipping VM: $vm_name because it has no VM ID"
    fi
 done < <(tail -n +1 $CSV_FILE)

La secuencia de comandos usa el comando discover vsphere guest para subir y ejecutar la secuencia de comandos de recogida de datos del invitado en la máquina virtual.

Es mejor ejecutar esta secuencia de comandos en segundo plano y dirigir la salida a un archivo de registro. Para ello, debes crear un archivo de texto que se transmita como entrada a la secuencia de comandos.

  1. Crea el archivo de texto:

    cat <<EOF >> INPUT_FILE
    CSV_FILES_PREFIXCSV_FILE_SUFFIX
    VSPHERE_URL
    VSPHERE_USER
    VSPHERE_PASSWORD
    VM_USER
    VM_PASSWORD
    EOF
    

    Haz los cambios siguientes:

    • INPUT_FILE: nombre del archivo de entrada
    • CSV_FILES_PREFIX: prefijo del nombre de archivo CSV
    • CSV_FILE_SUFFIX: sufijo del nombre de archivo CSV
    • VSPHERE_URL: la URL de su instancia de vCenter Server o de vSphere Client.
    • VSPHERE_USER: nombre de usuario de vCenter
    • VSPHERE_PASSWORD: contraseña de vCenter
    • VM_USER: nombre de usuario de la VM
    • VM_PASSWORD: contraseña de la VM
  2. Ejecuta la secuencia de comandos de la colección de invitados:

    nohup ./mcdc_collect_vms_guest_tools.sh <INPUT_FILE > /tmp/mcdc.out 2>&1 &
    
  3. Repite los pasos 1 y 2 con cada archivo CSV generado en el paso anterior.

Generar un informe de evaluación sin conexión

  • Una vez que se hayan recogido todos los datos, puede generar un informe HTML detallado:

    ./mcdc report --format html --full > REPORT_NAME.html
     

Siguientes pasos