איסוף נתונים וגילוי אורחים בקבוצות

במדריך הזה מוסבר איך לגלות ולאסוף נתונים על קבוצה של מופעי מכונות וירטואליות (VM) של VMware באמצעות כלי שורת הפקודה (CLI) של לקוח הגילוי של Migration Center. יכול להיות שיהיה קשה לעקוב אחרי קבוצות גדולות של מכונות וירטואליות ולפתור בעיות שקשורות אליהן. מומלץ להשתמש בקבוצות קטנות יותר של פחות מ-1,000.

מטרות

במדריך הזה תלמדו איך:

  • מורידים את mcdc CLI.
  • מריצים גילוי מלאי של VMWare.
  • יוצרים קובץ CSV עם כל המכונות הווירטואליות שזוהו.
  • מפצלים את קובץ ה-CSV לכמה קובצי CSV שמכילים קבוצת משנה של מכונות וירטואליות.
  • מריצים גילוי אורחים בכל המכונות הווירטואליות בקובץ CSV.
  • יוצרים דוח הערכה אופליין.

עלויות

במדריך הזה נעשה שימוש במשאבים מקומיים, ולא יחולו עלויות. Google Cloud

לפני שמתחילים

  1. מכינים מכונת Linux להתקנה ולהרצה של mcdc CLI. מחשב Linux צריך לעמוד בדרישות המינימליות הבאות:

    • glibc גרסה 2.25 ואילך
    • זיכרון RAM של 4GB ושטח אחסון של 10GB
    • קישוריות לרשת למארחי vCenter ו-ESX
  2. מוודאים שיש לכם משתמש vSphere עם ההרשאות הנדרשות:

    • הרשאות קריאה למכונות וירטואליות
    • הרשאות קריאה לכל המארחים של ESX
    • שינויים בפעולות של משתתפים
    • הרצת תוכנית פעולות אורח
    • שאילתות לגבי פעולות של אורחים

הורדה של mcdc CLI

  1. מתחברים למחשב Linux:
    ssh MACHINE_IP

    מחליפים את MACHINE_IP בכתובת ה-IP של מכונת Linux.

  2. מורידים את הגרסה האחרונה של mcdc CLI והופכים אותה לניתנת להרצה:
      curl -O "https://mc-release.storage.googleapis.com/mcdc/$(curl -s https://mc-release.storage.googleapis.com/mcdc/latest)/mcdc"
      chmod +x mcdc
  3. מוסיפים את ה-CLI של mcdc לנתיב של המעטפת:
    PATH=$PATH:`pwd`

ביצוע גילוי של מלאי VMware

  • מריצים את התהליך של גילוי המלאי:

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

    מחליפים את מה שכתוב בשדות הבאים:

    • USERNAME: שם המשתמש שלכם ב-vCenter
    • VSPHERE_URL: כתובת ה-URL של מופע vCenter Server או של vSphere Client

    הפלט של הפקודה discover אמור להיראות כך:

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

יצירת קובץ CSV עם כל המכונות הווירטואליות שזוהו

כדי ליצור קובץ CSV, משתמשים בסקריפט export ממאגר Migrate to Containers ב-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"

הסקריפט משתמש בפקודה report כדי ליצור קובץ CSV שמכיל את כל המכונות הווירטואליות שזוהו בשלב הקודם.

  1. מורידים את הסקריפט:

    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. מריצים את הסקריפט ושומרים את הפלט בקובץ:

    ./mcdc_discovery_export_guest_tools.sh > VMS_CSV_FILE
    

    מחליפים את VMS_CSV_FILE בשם שרוצים לתת לקובץ ה-CSV.

פיצול קובץ ה-CSV לכמה קובצי CSV עם קבוצת משנה של מכונות וירטואליות

כדי לפצל את קובץ ה-CSV הגדול לקובצי CSV קטנים יותר, אפשר להשתמש בסקריפט splitter ממאגר Migrate to Containers ב-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. מורידים את הסקריפט:

    curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/csv_splitter.sh
    chmod +x csv_splitter.sh
    
  2. מריצים את הסקריפט:

    ./csv_splitter.sh VMS_CSV_FILE CSV_FILES_PREFIX LINES_PER_FILE VMS_CSV_FILE CSV_FILES_PREFIX
    

    מחליפים את מה שכתוב בשדות הבאים:

    • VMS_CSV_FILE: קובץ ה-CSV של הקלט לפיצול.
    • CSV_FILES_PREFIX: הקידומת של קובצי ה-CSV שנוצרו.
    • LINES_PER_FILE: מספר השורות בכל קובץ CSV שנוצר. ערך ברירת המחדל הוא 10.

    הסקריפט יוצר קובצי CSV שונים.

  3. כדי לראות את רשימת קובצי ה-CSV שנוצרו:

    ls -lrt CSV_FILES_PREFIX*
    

הפעלת גילוי אורחים בכל המכונות הווירטואליות בקובץ CSV

כדי להריץ את התהליך של גילוי האורחים במכונות הווירטואליות בקובץ CSV, משתמשים בסקריפט collection ממאגר GitHub של Migrate to Containers.

חוזרים על השלב הזה לכל קובץ CSV שנוצר בשלב הקודם.


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)

הסקריפט משתמש בפקודה discover vsphere guest כדי להעלות ולהפעיל את סקריפט האיסוף של מערכת ההפעלה האורחת במכונת ה-VM.

מומלץ להריץ את הסקריפט הזה ברקע ולהפנות את הפלט לקובץ יומן. כדי לעשות זאת, צריך ליצור קובץ טקסט שמועבר כקלט לסקריפט.

  1. יוצרים את קובץ הטקסט:

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

    מחליפים את מה שכתוב בשדות הבאים:

    • INPUT_FILE: שם קובץ הקלט
    • CSV_FILES_PREFIX: קידומת של שם קובץ CSV
    • CSV_FILE_SUFFIX: סיומת של שם קובץ CSV
    • VSPHERE_URL: כתובת ה-URL של מופע vCenter Server או של vSphere Client
    • VSPHERE_USER: שם המשתמש ב-vCenter
    • VSPHERE_PASSWORD: סיסמת vCenter
    • VM_USER: שם המשתמש במכונה הווירטואלית
    • VM_PASSWORD: סיסמת מכונה וירטואלית
  2. מריצים את הסקריפט לאיסוף נתונים על אורחים:

    nohup ./mcdc_collect_vms_guest_tools.sh <INPUT_FILE > /tmp/mcdc.out 2>&1 &
    
  3. חוזרים על שלבים 1 ו-2 לכל קובץ CSV שנוצר בשלב הקודם.

יצירת דוח הערכה אופליין

  • אחרי שכל הנתונים נאספים, אפשר ליצור דוח HTML מפורט:

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

המאמרים הבאים