Gastsuchanfrage und Datenerfassung mit Batches


In dieser Anleitung erfahren Sie, wie Sie mit der Gastsuchanfrage der Befehlszeile des Migrationscenter-Discovery-Clients Daten für einen Batch von VMware-VM-Instanzen ermitteln und erfassen. Große Batches von VMs können schwer zu überwachen und Fehler dafür schwierig zu beheben sein. Wir empfehlen die Batchverarbeitung in kleineren Gruppen unter 1.000.

Ziele

In dieser Anleitung erhalten Sie Informationen zu folgenden Themen:

  • Laden Sie die mcdc-Befehlszeile herunter:
  • Führen Sie eine VMware-Inventarerkennung aus.
  • Generieren Sie eine CSV-Datei mit allen erkannten VMs.
  • Teilen Sie die CSV-Datei in mehrere CSV-Dateien mit einer Teilmenge der VMs auf.
  • Führen Sie die Gastsuchanfrage für alle VMs einer CSV-Datei aus.
  • Einen Offlinebewertungsbericht generieren

Kosten

In dieser Anleitung werden lokale Ressourcen verwendet und es fallen keine Google Cloud-Kosten an.

Hinweise

  1. Bereiten Sie einen Linux-Computer zum Installieren und Ausführen der mcdc-Befehlszeile vor. Für den Linux-Computer gelten die folgenden Mindestanforderungen:

    • glibc-Version 2.25 oder höher
    • 4 GB RAM und 10 GB Speicherplatz
    • Netzwerkverbindung zu vCenter- und ESX-Hosts
  2. Sie benötigen einen vSphere-Nutzer mit den erforderlichen Berechtigungen:

    • Leseberechtigungen für VMs
    • Leseberechtigungen für alle ESX-Hosts
    • Gastbetrieb-Änderungen
    • Ausführung des Gastbetriebsprogramms
    • Gastbetrieb-Abfragen

mcdc-Befehlszeile herunterladen

  1. Stellen Sie eine Verbindung zum Linux-Computer her:
    ssh MACHINE_IP
    

    Ersetzen Sie dabei MACHINE_IP durch die IP-Adresse des Linux-Computers.

  2. Laden Sie die neueste Version der mcdc-Befehlszeile herunter und machen Sie sie ausführbar:
      curl -O "https://mcdc-release.storage.googleapis.com/$(curl -s https://mcdc-release.storage.googleapis.com/latest)/mcdc"
      chmod +x mcdc
    
  3. Fügen Sie die mcdc-Befehlszeile zum Shell-Pfad hinzu:
    PATH=$PATH:`pwd`
    

VMware-Inventarerkennung ausführen

  • Führen Sie die Inventarerkennung aus:

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

    Ersetzen Sie dabei Folgendes:

    • USERNAME: Ihr vCenter-Nutzername
    • VSPHERE_URL: die URL für Ihre vCenter Server-Instanz oder den vSphere-Client

    Die Ausgabe des Befehls discover sieht in etwa so aus:

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

CSV-Datei mit allen erkannten VMs generieren

Verwenden Sie zum Generieren einer CSV-Datei das Skript export aus dem Repository für Migrate to Containers auf 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"

Das Skript verwendet den Befehl report, um eine CSV-Datei mit allen VMs zu generieren, die im vorherigen Schritt ermittelt wurden.

  1. Laden Sie das Skript herunter:

    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. Führen Sie das Skript aus und speichern Sie die Ausgabe in einer Datei:

    ./mcdc_discovery_export_guest_tools.sh > VMS_CSV_FILE
    

    Ersetzen Sie dabei VMS_CSV_FILE durch den gewünschten Namen für die CSV-Datei.

CSV-Datei in mehrere CSV-Dateien mit einer Teilmenge der VMs aufteilen

Verwenden Sie zum Aufteilen der großen CSV-Datei in kleinere CSV-Dateien das Skript splitter aus dem Repository für Migrate to Containers auf 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. Laden Sie das Skript herunter:

    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/csv_splitter.sh
    chmod +x csv_splitter.sh
    
  2. Führen Sie das Skript aus:

    ./csv_splitter.sh VMS_CSV_FILE CSV_FILES_PREFIX LINES_PER_FILE VMS_CSV_FILE CSV_FILES_PREFIX
    

    Ersetzen Sie dabei Folgendes:

    • VMS_CSV_FILE: die aufzuteilende CSV-Eingabedatei.
    • CSV_FILES_PREFIX: das Präfix für die generierten CSV-Dateien.
    • LINES_PER_FILE: die Anzahl der Zeilen pro generierte CSV-Datei. Der Standardwert ist 10.

    Das Skript generiert verschiedene CSV-Dateien.

  3. Rufen Sie die Liste der generierten CSV-Dateien auf:

    ls -lrt CSV_FILES_PREFIX*
    

Gastsuchanfrage für alle VMs einer CSV-Datei ausführen

Verwenden Sie zum Ausführen der Gastsuchanfrage für die VMs einer CSV-Datei das Skript collection aus dem GitHub-Repository für Migrate to Containers.

Wiederholen Sie diesen Schritt für jede im vorherigen Schritt generierte CSV-Datei.


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)

Das Skript verwendet den Befehl discover vsphere guest, um das Gasterfassungsskript auf die VM hochzuladen und dort auszuführen.

Es empfiehlt sich, dieses Skript im Hintergrund auszuführen und die Ausgabe an eine Logdatei weiterzuleiten. Dazu müssen Sie eine Textdatei erstellen, die als Eingabe an das Skript übergeben wird.

  1. Erstellen Sie die Textdatei:

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

    Ersetzen Sie dabei Folgendes:

    • INPUT_FILE: Dateiname der Eingabe
    • CSV_FILES_PREFIX: CSV-Dateinamenspräfix
    • CSV_FILE_SUFFIX: Suffix des CSV-Dateinamens
    • VSPHERE_URL: die URL für Ihre vCenter Server-Instanz oder den vSphere-Client
    • VSPHERE_USER: vCenter-Nutzername
    • VSPHERE_PASSWORD: vCenter-Passwort
    • VM_USER: VM-Nutzername
    • VM_PASSWORD: VM-Passwort
  2. Führen Sie das Gasterfassungsskript aus:

    nohup ./mcdc_collect_vms_guest_tools.sh <INPUT_FILE > /tmp/mcdc.out 2>&1 &
    
  3. Wiederholen Sie die Schritte 1 und 2 für jede im vorherigen Schritt generierte CSV-Datei.

Offlinebewertungsbericht generieren

  • Sobald alle Daten erfasst sind, können Sie einen detaillierten HTML-Bericht erstellen:

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

Nächste Schritte