Raggruppamento in batch del rilevamento degli invitati e della raccolta dati


Questo tutorial illustra il processo di rilevamento e raccolta dei dati su un batch di istanze di macchine virtuali (VM) VMware utilizzando il rilevamento guest dell'interfaccia a riga di comando del client di rilevamento del Centro di migrazione. Potrebbe essere difficile monitorare e risolvere grandi batch di VM. Ti consigliamo di raggrupparli in gruppi più piccoli di meno di 1000.

Obiettivi

In questo tutorial imparerai a:

  • Scarica l'interfaccia a riga di comando mcdc.
  • Eseguire un rilevamento dell'inventario VMWare.
  • Genera un file CSV con tutte le VM rilevate.
  • Suddividi il file CSV in più file CSV contenenti un sottoinsieme delle VM.
  • Eseguire il rilevamento dei guest su tutte le VM in un file CSV.
  • Generare un report di valutazione offline.

Costi

Questo tutorial utilizza risorse on-premise e non prevede costi di Google Cloud.

Prima di iniziare

  1. Prepara una macchina Linux per installare ed eseguire l'interfaccia a riga di comando mcdc. La macchina Linux deve avere i seguenti requisiti minimi:

    • glibc 2.25 o versioni successive
    • 4 GB di RAM e 10 GB di spazio su disco
    • Connettività di rete agli host vCenter ed ESX
  2. Assicurati di disporre di un utente vSphere con le autorizzazioni necessarie:

    • Privilegi di lettura per le VM
    • Privilegi di lettura per tutti gli host ESX
    • Modifiche alle operazioni guest
    • Esecuzione del programma operativo guest
    • Query sulle operazioni guest

Scarica l'interfaccia a riga di comando mcdc

  1. Connettiti alla macchina Linux:
    ssh MACHINE_IP
    

    Sostituisci MACHINE_IP con l'indirizzo IP della tua macchina Linux.

  2. Scarica la versione più recente dell'interfaccia a riga di comando mcdc e rendila eseguibile:
      curl -O "https://mcdc-release.storage.googleapis.com/$(curl -s https://mcdc-release.storage.googleapis.com/latest)/mcdc"
      chmod +x mcdc
    
  3. Aggiungi l'interfaccia a riga di comando mcdc al percorso della shell:
    PATH=$PATH:`pwd`
    

Eseguire un rilevamento dell'inventario VMware

  • Esegui il rilevamento dell'inventario:

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

    Sostituisci quanto segue:

    • USERNAME: il tuo nome utente vCenter
    • VSPHERE_URL: l'URL dell'istanza vCenter Server o del client vSphere

    L'output del comando discover è simile al seguente:

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

Genera un file CSV con tutte le VM rilevate

Per generare un file CSV, usa lo script export dal repository Migrate to Containers su 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"

Lo script utilizza il comando report per generare un file CSV contenente tutte le VM rilevate nel passaggio precedente.

  1. Scarica lo script:

    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. Esegui lo script e salva l'output in un file:

    ./mcdc_discovery_export_guest_tools.sh > VMS_CSV_FILE
    

    Sostituisci VMS_CSV_FILE con il nome che vuoi usare per il file CSV.

Suddividi il file CSV in più file CSV contenenti un sottoinsieme delle VM

Per suddividere il file CSV di grandi dimensioni in file CSV più piccoli, usa lo script splitter dal repository Migrate to Containers su 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. Scarica lo script:

    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/csv_splitter.sh
    chmod +x csv_splitter.sh
    
  2. Esegui lo script:

    ./csv_splitter.sh VMS_CSV_FILE CSV_FILES_PREFIX LINES_PER_FILE VMS_CSV_FILE CSV_FILES_PREFIX
    

    Sostituisci quanto segue:

    • VMS_CSV_FILE: il file CSV di input da suddividere.
    • CSV_FILES_PREFIX: il prefisso per i file CSV generati.
    • LINES_PER_FILE: il numero di righe per file CSV generato. Il valore predefinito è 10.

    Lo script genera vari file CSV.

  3. Visualizza l'elenco dei file CSV generati:

    ls -lrt CSV_FILES_PREFIX*
    

Esegui il rilevamento guest su tutte le VM in un file CSV

Per eseguire il rilevamento guest per le VM in un file CSV, utilizza lo script collection dal repository GitHub Migrate to Containers.

Ripeti questo passaggio per ciascun file CSV generato nel passaggio precedente.


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)

Lo script utilizza il comando discover vsphere guest per caricare ed eseguire lo script di raccolta guest sulla VM.

È preferibile eseguire questo script in background e indirizzare l'output a un file di log. Per farlo, devi creare un file di testo che viene passato come input allo script.

  1. Crea il file di testo:

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

    Sostituisci quanto segue:

    • INPUT_FILE: nome file di input
    • CSV_FILES_PREFIX: prefisso del nome file CSV
    • CSV_FILE_SUFFIX: suffisso del nome file CSV
    • VSPHERE_URL: l'URL dell'istanza vCenter Server o del client vSphere
    • VSPHERE_USER: nome utente vCenter
    • VSPHERE_PASSWORD: password vCenter
    • VM_USER: nome utente VM
    • VM_PASSWORD: password VM
  2. Esegui lo script per la raccolta degli invitati:

    nohup ./mcdc_collect_vms_guest_tools.sh <INPUT_FILE > /tmp/mcdc.out 2>&1 &
    
  3. Ripeti i passaggi 1 e 2 per ogni file CSV generato nel passaggio precedente.

Generare un report di valutazione offline

  • Dopo aver raccolto tutti i dati, puoi produrre un report HTML dettagliato:

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

Passaggi successivi