Traitement par lots de la découverte d'invités et la collecte de données


Ce tutoriel vous guide tout au long du processus de découverte et de collecte de données sur un lot d'instances de machines virtuelles (VM) VMware à l'aide de la découverte d'invités de la CLI du centre de migration. La surveillance et la résolution des problèmes liés aux lots de VM volumineux peuvent être difficiles. Nous vous recommandons de les regrouper par groupes plus petits, de moins de 1 000 VM.

Objectifs

Dans ce tutoriel, vous allez apprendre à effectuer les opérations suivantes :

  • Télécharger la CLI mcdc.
  • Exécuter une découverte d'inventaire VMWare.
  • Générer un fichier CSV contenant toutes les VM détectées.
  • Diviser le fichier CSV en plusieurs fichiers CSV contenant un sous-ensemble de VM.
  • Exécuter la détection d'invités sur toutes les VM dans un fichier CSV.
  • Générer un rapport d'évaluation hors connexion.

Coûts

Ce tutoriel utilise des ressources sur site et n'entraîne aucun coût Google Cloud.

Avant de commencer

  1. Préparez une machine Linux pour installer et exécuter la CLI mcdc. La machine Linux doit répondre aux exigences minimales suivantes :

    • glibc version 2.25 ou ultérieure
    • 4 Go de RAM et 10 Go d'espace disque
    • Connectivité réseau aux hôtes vCenter et ESX
  2. Assurez-vous de disposer d'un utilisateur vSphere disposant des autorisations nécessaires :

    • Droits de lecture sur les VM
    • Droits de lecture sur tous les hôtes ESX
    • Modifications d'opération d'invité
    • Exécution du programme d'opération d'invité
    • Requêtes concernant les opérations d'invités

Télécharger la CLI mcdc

  1. Connectez-vous à la machine Linux :
    ssh MACHINE_IP

    Remplacez MACHINE_IP par l'adresse IP de votre machine Linux.

  2. Téléchargez la dernière version de la CLI mcdc et rendez-la exécutable :
      curl -O "https://mcdc-release.storage.googleapis.com/$(curl -s https://mcdc-release.storage.googleapis.com/latest)/mcdc"
      chmod +x mcdc
  3. Ajoutez la CLI mcdc au chemin d'accès à l'interface système :
    PATH=$PATH:`pwd`

Effectuer une découverte d'inventaire VMware

  • Exécutez la détection d'inventaire :

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

    Remplacez les éléments suivants :

    • USERNAME : votre nom d'utilisateur vCenter
    • VSPHERE_URL : URL de votre instance vCenter Server ou du client vSphere

    Le résultat de la commande discover se présente comme suit :

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

Générer un fichier CSV contenant toutes les VM détectées

Pour générer un fichier CSV, utilisez le script export du dépôt Migrate to Containers sur 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"

Le script utilise la commande report pour générer un fichier CSV contenant toutes les VM détectées à l'étape précédente.

  1. Téléchargez le 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. Exécutez le script et enregistrez le résultat dans un fichier :

    ./mcdc_discovery_export_guest_tools.sh > VMS_CSV_FILE
    

    Remplacez VMS_CSV_FILE par le nom souhaité pour le fichier CSV.

Diviser le fichier CSV en plusieurs fichiers CSV avec un sous-ensemble de VM

Pour diviser le fichier CSV volumineux en fichiers CSV plus petits, utilisez le script splitter du dépôt Migrate to Containers sur 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. Téléchargez le script :

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

    ./csv_splitter.sh VMS_CSV_FILE CSV_FILES_PREFIX LINES_PER_FILE VMS_CSV_FILE CSV_FILES_PREFIX
    

    Remplacez les éléments suivants :

    • VMS_CSV_FILE : le fichier CSV d'entrée à diviser
    • CSV_FILES_PREFIX : le préfixe des fichiers CSV générés
    • LINES_PER_FILE : le nombre de lignes par fichier CSV généré. La valeur par défaut est 10.

    Le script génère divers fichiers CSV.

  3. Affichez la liste des fichiers CSV générés :

    ls -lrt CSV_FILES_PREFIX*
    

Exécuter la détection d'invités sur toutes les VM dans un fichier CSV

Pour exécuter la découverte d'invités pour les VM dans un fichier CSV, utilisez le script collection du dépôt GitHub de Migrate to Containers.

Répétez cette opération pour chaque fichier CSV généré à l'étape précédente.


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)

Le script utilise la commande discover vsphere guest pour importer et exécuter le script de collecte d'invités sur la VM.

Il est préférable d'exécuter ce script en arrière-plan et de diriger la sortie vers un fichier journal. Pour ce faire, vous devez créer un fichier texte qui sera transmis en entrée au script.

  1. Créez le fichier texte :

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

    Remplacez les éléments suivants :

    • INPUT_FILE : nom du fichier d'entrée
    • CSV_FILES_PREFIX : préfixe du nom de fichier CSV
    • CSV_FILE_SUFFIX : suffixe du nom de fichier CSV
    • VSPHERE_URL : URL de votre instance vCenter Server ou du client vSphere
    • VSPHERE_USER : nom d'utilisateur vCenter
    • VSPHERE_PASSWORD : mot de passe vCenter
    • VM_USER : nom d'utilisateur de la VM
    • VM_PASSWORD : mot de passe de la VM
  2. Exécutez le script de collecte d'invités :

    nohup ./mcdc_collect_vms_guest_tools.sh <INPUT_FILE > /tmp/mcdc.out 2>&1 &
    
  3. Répétez les étapes 1 et 2 pour chaque fichier CSV généré à l'étape précédente.

Générer un rapport d'évaluation hors connexion

  • Après que toutes les données ont été collectées, vous pouvez générer un rapport HTML détaillé :

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

Étapes suivantes