איסוף נתוני אורחים ממכונות וירטואליות של EC2 לצורך הערכה אופליין

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

מטרות

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

  • כדי להעריך את המכונות הווירטואליות שלכם ב-AWS EC2, אתם יכולים להוריד את mcdc CLI.
  • מבצעים גילוי של מלאי AWS EC2.
  • איסוף מידע ברמת האורח בכל המכונות הווירטואליות באזור EC2 באמצעות AWS Session Manager או SSH.
  • יוצרים דוח הערכה אופליין.
  • (מתקדם) משנים את הסקריפטים בהתאם לצרכים שלכם.
  • (מתקדם) כותבים סקריפט תזמור מאפס.

עלויות

המדריך הזה לא כרוך בעלויות. Google Cloud

סביר להניח שהשינוי לא ישפיע על העלויות ב-AWS.

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

הדרישות המוקדמות תלויות בדרך שבה מתחברים למכונות ה-VM של EC2.

Session Manager

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

    • גרסאות ליבה של Linux‏ 2.6.23 ואילך
    • זיכרון RAM של 4GB ושטח אחסון של 10GB
    • ‫AWS CLI מותקן
  2. חשוב לוודא של-AWS CLI יש את ההרשאות הבאות:

    • אפשר להתקשר אל aws ssm describe-instance-information
    • אפשר להתקשר אל aws ssm start-session

SSH

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

    • גרסאות ליבה של Linux‏ 2.6.23 ואילך
    • זיכרון RAM של 4GB ושטח אחסון של 10GB
    • ‫AWS CLI מותקן
    • קישוריות לרשת למופעי EC2 (יכול להיות דרך שרת proxy)
  2. חשוב לוודא של-AWS CLI יש את ההרשאות הבאות:

הורדה של 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`

ביצוע גילוי מלאי ב-AWS

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

    ./mcdc discover aws -r REGION
    

    מחליפים את REGION באזור של מכונות EC2 הווירטואליות.

    ממשק ה-CLI של mcdc יבקש מכם את המזהה של מפתח הגישה ואת מפתח הגישה הסודי.

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

    Collected 166 VMs
    [✓] Collection completed.
    

ביצוע גילוי של משתמשים אורחים

אפשר לגלות אורחים באמצעות Session Manager או SSH.

Session Manager

בשיטה הזו נעשה שימוש ב-AWS Systems Manager Session Manager כדי לבצע גילוי אורחים בכל המכונות הווירטואליות שבהן מותקן SSM agent. סוכן SSM מותקן כברירת מחדל ברוב תמונות ה-AMI שסופקו על ידי אמזון, ואפשר להתקין אותו באופן ידני באחרות.

  1. מוודאים שלכל המכונות הווירטואליות יש תפקיד ב-IAM שמאפשר להתחבר באמצעות Session Manager. מידע נוסף זמין במסמכי העזרה של AWS.

  2. מוודאים שכל המכונות הווירטואליות שרוצים לאסוף מהן נתונים מופעלות.

  3. מריצים גילוי של אורחים באמצעות הסקריפט ssm guest collection ממאגר Migrate to Containers ב-GitHub.

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

     curl -O https://raw.githubusercontent.com/GoogleCloudPlatform/migrate-to-containers/main/scripts/mcdc/mcdc_collect_aws_guest_ssm.sh
     chmod +x mcdc_collect_aws_guest_ssm.sh
    

    ב. מריצים את הסקריפט ושומרים את הפלט בקובץ:

     ./mcdc_collect_aws_guest_ssm.sh --region REGION
    

    מחליפים את REGION באזור של מכונות EC2 הווירטואליות.

    כל הדגלים מועברים ישירות אל aws ssm describe-instance-information. כדי לאסוף נתונים ממכונת VM ספציפית, מריצים את הפקודה הבאה:

     ./mcdc_collect_aws_guest_ssm.sh --region REGION --filters "Key=InstanceIds,Values=VM_ID"
    

    מחליפים את VM_ID במזהה המכונה הווירטואלית.

    מידע נוסף על כל האפשרויות שזמינות לפקודה describe-instance-information מופיע במסמכי התיעוד של AWS.

SSH

השיטה הזו משתמשת ב-SSH כדי לבצע גילוי אורחים במכונות וירטואליות של Linux. הוא מתחבר לכתובת ה-IP הציבורית של כל מכונה וירטואלית. עם זאת, קל לשנות את הסקריפט. לדוגמה, כדי להתחבר לכתובת IP פרטית.

הסקריפט משתמש ב-EC2 instance connect לאימות. התכונה Instance Connect זמינה רק במכונות וירטואליות של Amazon Linux ו-Ubuntu, ויכול להיות שיהיה צורך להתקין אותה. עם זאת, אפשר לשנות את הסקריפט בקלות כדי להשתמש בשיטת אימות חלופית, כמו אימות באמצעות סיסמה באמצעות sshpass או מפתח פרטי.

  1. מוודאים שיש לכם גישה לרשת של המכונות הווירטואליות. יכול להיות שתצטרכו לשנות את הכללים לתעבורה נכנסת עבור קבוצות האבטחה שלכם, או להשתמש בשרת proxy כדי להתחבר.

  2. מוודאים שכל המכונות הווירטואליות שרוצים לאסוף מהן נתונים מופעלות.

  3. מריצים גילוי של אורחים באמצעות הסקריפט ssh guest collection ממאגר Migrate to Containers ב-GitHub.

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

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

      ./mcdc_collect_aws_guest_ssh.sh --region REGION
      

      מחליפים את REGION באזור של מכונות EC2 הווירטואליות.

      כל דגל בשם -a או --ssh-arg מועבר ישירות ל-SSH. כדי להשבית את האימות המחמיר של מפתח המארח, מריצים את הפקודה הבאה:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION -a '-o StrictHostKeyChecking=no'
      

      כל שאר הדגלים מועברים ישירות אל aws ssh describe-instances. כדי לאסוף נתונים ממכונת VM ספציפית, מריצים את הפקודה הבאה:

      ./mcdc_collect_aws_guest_ssm.sh --region REGION --instance-ids VM_ID
      

      מחליפים את VM_ID במזהה המכונה הווירטואלית.

      מידע על כל הדגלים המותרים מופיע במסמכי AWS.

      אפשר להשתמש בפרוקסי כדי להתחבר למכונה וירטואלית באמצעות האפשרות ProxyCommand של SSH. לדוגמה, כדי להשתמש בשרת proxy מסוג socks5 קיים ביציאה PROXY_PORT, מריצים את הפקודה הבאה:

      ./mcdc_collect_aws_guest_ssh.sh --region REGION -a '-o ProxyCommand=nc -X 5 -x 127.0.0.1:PROXY_PORT %h %p'
      

      מחליפים את PROXY_PORT במספר היציאה.

  4. אם שיניתם את הכללים לתנועה נכנסת בשלב 1, כדאי לשקול לבטל את השינויים.

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

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

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

(מתקדם) שינוי הסקריפטים בהתאם לצרכים שלכם

יכול להיות שאף אחד מהסקריפטים לא מתאים בדיוק לצרכים שלכם. לדוגמה, יכול להיות שלא התקנתם את סוכן SSM או את Instance Connect בחלק מהמכונות הווירטואליות.

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

לדוגמה, אפשר לשנות את סקריפט האיסוף של SSH כדי להשתמש בכתובות IP פרטיות במקום בכתובות IP ציבוריות.

הוספנו הערות רבות לסקריפטים כדי שיהיה קל להבין אותם.

(מתקדם) כתיבת סקריפט תזמור מאפס

כדי לתזמר גילוי של אורחים ואיסוף נתונים בהיקף נרחב:

  1. מזהים את כל המכונות הווירטואליות שרוצים לאסוף מהן נתונים.
  2. מעלים את הסקריפט של אוסף האורחים לכל מכונה וירטואלית. למכונות וירטואליות של Linux ו-Windows נדרשים סקריפטים שונים לאיסוף נתונים ממערכת ההפעלה האורחת.
  3. מריצים את סקריפט איסוף האורחים בכל מכונה וירטואלית.
  4. מורידים את הארטיפקט שנוצר מכל מכונת VM.
  5. מייבאים את סקריפט האוסף של האורחים שהורד אל ה-CLI‏ mcdc.

למרות שלעתים קרובות תצטרכו לכתוב את רוב הקוד מאפס, יש כמה אבני בניין שימושיות בסקריפטים לדוגמה, שיכולות לעזור לכם בחלק מהמשימות האלה. לדוגמה:

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