Agrupación en lotes de la detección de invitados y la recopilación de datos


En este instructivo, se explica el proceso de descubrimiento y recopilación de datos en un lote de instancias de máquina virtual (VM) de VMware mediante el descubrimiento de invitados de la CLI del cliente del descubrimiento de Migration Center. Los lotes grandes de VMs pueden presentar dificultades para la supervisión y la solución de problemas. Recomendamos agrupar por lotes en grupos más pequeños de menos de 1,000.

Objetivos

En este instructivo aprenderás realizar las siguientes tareas:

  • Descargar la CLI de mcdc.
  • Ejecutar un descubrimiento de inventario de VMWare.
  • Generar un archivo CSV con todas las VMs descubiertas.
  • Dividir el archivo CSV en varios archivos CSV que contengan un subconjunto de las VMs.
  • Ejecutar el descubrimiento de invitados en todas las VMs de un archivo CSV.
  • Generar un informe de evaluación sin conexión.

Costos

En este instructivo, se usan recursos locales y no se generan costos de Google Cloud.

Antes de comenzar

  1. Prepara una máquina de Linux para instalar y ejecutar la CLI de mcdc. La máquina de Linux debe tener los siguientes requisitos mínimos:

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

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

Descarga la CLI de mcdc

  1. Conéctate a la máquina de Linux:
    ssh MACHINE_IP

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

  2. Descarga la última versión 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. Agrega la CLI de mcdc a tu ruta de shell:
    PATH=$PATH:`pwd`

Realiza un descubrimiento de inventario de VMware

  • Ejecuta el descubrimiento de inventario:

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

    Reemplaza lo siguiente:

    • USERNAME: es tu nombre de usuario de vCenter
    • VSPHERE_URL: la URL de tu instancia de vCenter Server o el cliente de vSphere

    El resultado del comando discover se ve de la siguiente manera:

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

Genera un archivo CSV con todas las VMs descubiertas

Para generar un archivo CSV, usa la secuencia de comandos export del repositorio de 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 VMs que se descubrieron 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
    

    Reemplaza VMS_CSV_FILE por el nombre que deseas para el archivo CSV.

Divide el archivo CSV en varios archivos CSV con un subconjunto de las VMs.

Para dividir el archivo CSV grande en archivos CSV más pequeños, usa la secuencia de comandos splitter del repositorio de 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. Ejecute la secuencia de comandos:

    ./csv_splitter.sh VMS_CSV_FILE CSV_FILES_PREFIX LINES_PER_FILE VMS_CSV_FILE CSV_FILES_PREFIX
    

    Reemplaza lo siguiente:

    • VMS_CSV_FILE: el archivo CSV de entrada que se dividirá.
    • CSV_FILES_PREFIX: el prefijo de los archivos CSV generados.
    • LINES_PER_FILE: la cantidad de líneas por archivo CSV generado. El valor predeterminado es 10.

    La secuencia de comandos genera varios archivos CSV.

  3. Visualiza la lista de archivos CSV generados:

    ls -lrt CSV_FILES_PREFIX*
    

Ejecuta el descubrimiento de invitados en todas las VMs de un archivo CSV

Para ejecutar el descubrimiento de invitados para las VMs en un archivo CSV, usa la secuencia de comandos collection del repositorio de GitHub de Migrate to Containers.

Repite este paso para 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 recopilación de invitados en la VM.

Es mejor ejecutar esta secuencia de comandos en segundo plano y dirigir el resultado a un archivo de registro. Para hacerlo, debes crear un archivo de texto que se pase 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
    

    Reemplaza lo siguiente:

    • INPUT_FILE: nombre de 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 tu instancia de vCenter Server o el cliente de vSphere
    • 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 recopilación de invitados:

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

Genera un informe de evaluación sin conexión

  • Después de que se hayan recopilado todos los datos, podrás generar un informe HTML detallado:

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

¿Qué sigue?