Raggruppamento della rilevazione degli ospiti e della raccolta dei dati


Questo tutorial illustra la procedura per rilevare e raccogliere i dati su un batch di istanze di macchine virtuali (VM) VMware utilizzando la funzionalità di rilevamento guest dell'interfaccia a riga di comando del client di rilevamento del Centro di migrazione. Potrebbe essere difficile monitorare e risolvere i problemi di grandi batch di VM. Consigliamo di raggruppare gli annunci in gruppi più piccoli di meno di 1000.

Obiettivi

In questo tutorial imparerai a:

  • Scarica l'interfaccia a riga di comando mcdc.
  • Esegui 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 di VM.
  • Esegui la ricerca di guest su tutte le VM in un file CSV.
  • Genera un report di valutazione offline.

Costi

Questo tutorial utilizza risorse on-premise e non comporta costi per 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 versione 2.25 o 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 all'operazione ospite
    • Esecuzione del programma di operazioni ospite
    • 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 del mcdc CLI 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`

Esegui 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 è il 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, utilizza lo script export del 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 assegnare al file CSV.

Suddividi il file CSV in più file CSV con un sottoinsieme di VM

Per suddividere il file CSV di grandi dimensioni in file CSV più piccoli, utilizza lo script splitter del 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 la ricerca di guest su tutte le VM in un file CSV

Per eseguire la ricerca degli ospiti per le VM in un file CSV, utilizza lo script collection del repository GitHub di Migrate to Containers.

Ripeti questo passaggio per ogni 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 del 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 della VM
    • VM_PASSWORD: password della VM
  2. Esegui lo script di raccolta degli ospiti:

    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

  • Una volta raccolti tutti i dati, puoi generare un report HTML dettagliato:

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

Passaggi successivi