במדריך הזה מוסבר איך לגלות ולאסוף נתונים במופעי מכונה וירטואלית (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 הווירטואליות.
ממשק
mcdcCLI יבקש מכם להזין את המזהה של מפתח הגישה ואת מפתח הגישה הסודי.הפלט של פקודת הגילוי אמור להיראות כך:
Collected 166 VMs [✓] Collection completed.
ביצוע גילוי של אורחים
אפשר לבצע גילוי של אורחים באמצעות Session Manager או SSH.
Session Manager
בשיטה הזו נעשה שימוש ב-AWS Systems Manager Session Manager כדי לבצע גילוי אורחים בכל המכונות הווירטואליות שבהן מותקן SSM agent. סוכן ה-SSM מותקן כברירת מחדל ברוב תמונות ה-AMI שסופקו על ידי אמזון, ואפשר להתקין אותו באופן ידני באחרות.
מוודאים שלכל המכונות הווירטואליות יש תפקיד ב-IAM שמאפשר להתחבר באמצעות Session Manager. מידע נוסף זמין במסמכי העזרה של AWS.
מוודאים שכל המכונות הווירטואליות שרוצים לאסוף מהן נתונים מופעלות.
מריצים גילוי של אורחים באמצעות הסקריפט של אוסף אורחים של SSM ממאגר 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 ממאגר 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.
אפשר להשתמש בפרוקסי כדי להתחבר למכונה וירטואלית באמצעות האפשרות
ProxyCommandSSH. לדוגמה, כדי להשתמש בשרת 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 נדרשים סקריפטים שונים לאיסוף נתוני אורח.
- מריצים את הסקריפט לאיסוף נתוני אורחים בכל מכונה וירטואלית.
- מורידים את הארטיפקט שנוצר מכל מכונה וירטואלית.
- מייבאים את הסקריפט של אוסף האורחים שהורד אל ה-CLI
mcdc.
למרות שלעתים קרובות תצטרכו לכתוב את רוב הקוד מאפס, יש כמה אבני בניין שימושיות בסקריפטים לדוגמה, שיכולות לעזור לכם בחלק מהמשימות האלה. לדוגמה:
- חזרה על כל המכונות הווירטואליות ב-EC2.
- הורדה של סקריפטים לאיסוף נתוני אורחים ב-Windows וב-Linux.
- לפעמים לא תהיה לכם אפשרות להעלות ולהוריד קבצים. במקרים כאלה אפשר לכלול את סקריפטים האיסוף בפקודות שנשלחות, ולכתוב את הארטיפקטים בקידוד Base64 ל-stdout. סקריפט האיסוף של SSM יכול לשמש כדוגמה מועילה לאופן שבו אפשר לעשות זאת.
- ייבוא הארטיפקט שנאסף אל
mcdcCLI.
המאמרים הבאים
- מידע נוסף על
mcdcCLI - דוגמאות לסקריפטים
- במאגר GitHub של Migrate to Containers יש הדרכה בנושא העברת אפליקציית Spring Framework, שבה מוסבר איך להעביר אפליקציה מורכבת יותר.
- שיטות מומלצות לתכנון