במדריך הזה מוסבר איך לגלות ולאסוף נתונים במופעי מכונה וירטואלית (VM) של EC2, כדי להשתמש בהם להערכה טכנית במצב אופליין באמצעות כלי ה-CLI של לקוח הגילוי של Migration Center.
מטרות
במדריך הזה תלמדו איך:
- כדי להעריך את המכונות הווירטואליות שלכם ב-AWS EC2, אתם יכולים להוריד את
mcdcCLI. - מבצעים גילוי של מלאי AWS EC2.
- איסוף מידע ברמת האורח בכל המכונות הווירטואליות באזור EC2 באמצעות AWS Session Manager או SSH.
- יוצרים דוח הערכה אופליין.
- (מתקדם) משנים את הסקריפטים בהתאם לצרכים שלכם.
- (מתקדם) כותבים סקריפט תזמור מאפס.
עלויות
המדריך הזה לא כרוך בעלויות. Google Cloud
סביר להניח שהשינוי לא ישפיע על העלויות ב-AWS.
לפני שמתחילים
הדרישות המוקדמות תלויות בדרך שבה מתחברים למכונות ה-VM של EC2.
Session Manager
מכינים מכונת Linux להורדה ולהפעלה של
mcdcCLI. מחשב Linux צריך לעמוד בדרישות המינימליות הבאות:- גרסאות ליבה של Linux 2.6.23 ואילך
- זיכרון RAM של 4GB ושטח אחסון של 10GB
- AWS CLI מותקן
חשוב לוודא של-AWS CLI יש את ההרשאות הבאות:
- אפשר להתקשר אל
aws ssm describe-instance-information - אפשר להתקשר אל
aws ssm start-session
- אפשר להתקשר אל
SSH
מכינים מכונת Linux להורדה ולהפעלה של
mcdcCLI. מחשב Linux צריך לעמוד בדרישות המינימליות הבאות:- גרסאות ליבה של Linux 2.6.23 ואילך
- זיכרון RAM של 4GB ושטח אחסון של 10GB
- AWS CLI מותקן
- קישוריות לרשת למופעי EC2 (יכול להיות דרך שרת proxy)
חשוב לוודא של-AWS CLI יש את ההרשאות הבאות:
- אפשר להתקשר אל
aws ec2 describe-instances - Instance Connect
- אפשר להתקשר אל
הורדה של mcdc CLI
- מתחברים למחשב Linux:
ssh MACHINE_IPמחליפים את MACHINE_IP בכתובת ה-IP של מכונת Linux.
- מורידים את הגרסה האחרונה של
mcdcCLI והופכים אותה לניתנת להרצה:curl -O "https://mc-release.storage.googleapis.com/mcdc/$(curl -s https://mc-release.storage.googleapis.com/mcdc/latest)/mcdc" chmod +x mcdc
- מוסיפים את ה-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 שסופקו על ידי אמזון, ואפשר להתקין אותו באופן ידני באחרות.
מוודאים שלכל המכונות הווירטואליות יש תפקיד ב-IAM שמאפשר להתחבר באמצעות Session Manager. מידע נוסף זמין במסמכי העזרה של AWS.
מוודאים שכל המכונות הווירטואליות שרוצים לאסוף מהן נתונים מופעלות.
מריצים גילוי של אורחים באמצעות הסקריפט 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 או מפתח פרטי.
מוודאים שיש לכם גישה לרשת של המכונות הווירטואליות. יכול להיות שתצטרכו לשנות את הכללים לתעבורה נכנסת עבור קבוצות האבטחה שלכם, או להשתמש בשרת proxy כדי להתחבר.
מוודאים שכל המכונות הווירטואליות שרוצים לאסוף מהן נתונים מופעלות.
מריצים גילוי של אורחים באמצעות הסקריפט ssh guest collection ממאגר Migrate to Containers ב-GitHub.
מורידים את הסקריפט:
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מריצים את הסקריפט ושומרים את הפלט בקובץ:
./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 במספר היציאה.
אם שיניתם את הכללים לתנועה נכנסת בשלב 1, כדאי לשקול לבטל את השינויים.
יצירת דוח הערכה אופליין
אחרי שכל הנתונים נאספים, אפשר ליצור דוח HTML מפורט:
./mcdc report --format html --full > REPORT_NAME.html
(מתקדם) שינוי הסקריפטים בהתאם לצרכים שלכם
יכול להיות שאף אחד מהסקריפטים לא מתאים בדיוק לצרכים שלכם. לדוגמה, יכול להיות שלא התקנתם את סוכן SSM או את Instance Connect בחלק מהמכונות הווירטואליות.
במקרים כאלה, בדרך כלל יש לכם דרך סטנדרטית להתחבר למכונות. מומלץ לכתוב סקריפטים שיאפשרו לכם לתזמן את השיטות האלה בהיקף גדול. יכול להיות שתצטרכו לכתוב את הסקריפטים האלה מאפס, אבל במקרים אחרים תוכלו לשנות את הסקריפטים הקיימים.
לדוגמה, אפשר לשנות את סקריפט האיסוף של SSH כדי להשתמש בכתובות IP פרטיות במקום בכתובות IP ציבוריות.
הוספנו הערות רבות לסקריפטים כדי שיהיה קל להבין אותם.
(מתקדם) כתיבת סקריפט תזמור מאפס
כדי לתזמר גילוי של אורחים ואיסוף נתונים בהיקף נרחב:
- מזהים את כל המכונות הווירטואליות שרוצים לאסוף מהן נתונים.
- מעלים את הסקריפט של אוסף האורחים לכל מכונה וירטואלית. למכונות וירטואליות של Linux ו-Windows נדרשים סקריפטים שונים לאיסוף נתונים ממערכת ההפעלה האורחת.
- מריצים את סקריפט איסוף האורחים בכל מכונה וירטואלית.
- מורידים את הארטיפקט שנוצר מכל מכונת VM.
- מייבאים את סקריפט האוסף של האורחים שהורד אל ה-CLI
mcdc.
למרות שלעתים קרובות תצטרכו לכתוב את רוב הקוד מאפס, יש כמה אבני בניין שימושיות בסקריפטים לדוגמה, שיכולות לעזור לכם בחלק מהמשימות האלה. לדוגמה:
- חזרה על כל המכונות הווירטואליות ב-EC2.
- הורדה של סקריפטים לאיסוף נתוני אורחים ב-Windows וב-Linux.
- לפעמים לא תהיה לכם אפשרות להעלות ולהוריד קבצים. במקרים כאלה אפשר לכלול את סקריפטים האיסוף בפקודות שנשלחות, ולכתוב את הארטיפקטים בקידוד Base64 ל-stdout. סקריפט האיסוף של SSM יכול לשמש כדוגמה מועילה לאופן שבו אפשר לעשות זאת.
- ייבוא הארטיפקט שנאסף אל
mcdcCLI.
המאמרים הבאים
- מידע נוסף על
mcdcCLI - דוגמאות לסקריפטים
- במאגר GitHub של Migrate to Containers יש הדרכה בנושא העברת אפליקציית Spring Framework, שבה מוסבר איך להעביר אפליקציה מורכבת יותר.
- שיטות מומלצות לתכנון