PracticU

שכפול מכונות וירטואלית
ב-Terraform
פרויקט NodeJS

בלי כתוביותעם כתוביות
PracticU › קורס Terraform - DevOps - Azure & AWS › שכפול מכונות וירטואלית ב-Terraform פרויקט NodeJS
מילון מושגים:
Terraform - כלי להגדרת תשתית כקוד, שמאפשר ליצור ולנהל משאבי ענן ותשתית בעזרת קובצי תצורה.
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
אינדקס - מבנה במסד נתונים שמאיץ חיפוש ושליפה. גם מספר המציין מיקום של איבר במערך.
SSH - פרוטוקול לחיבור מרוחק ומוצפן למחשב, בעיקר לשרתי Linux, לצורך ניהול דרך שורת הפקודה.
AWS - שירותי הענן של אמזון (Amazon Web Services), המספקים שרתים, אחסון, מסדי נתונים ושירותים נוספים לפי שימוש.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
EC2 - שירות של AWS להפעלת שרתים וירטואליים בענן לפי דרישה ולפי שימוש.
VPC - רשת וירטואלית פרטית ומבודדת בתוך הענן, שבה הלקוח שולט בכתובות, בתת-רשתות ובכללי הגישה.

שכפול מכונות וירטואלית ב-Terraform - פרויקט NodeJS

בשיעור זה לומדים איך לשכפל את שרת ה-web ב-Terraform כדי שאם שרת אחד נופל השני יעבוד במקומו, משתמשים ב-count וב-count.index לשמות ייחודיים, מפיקים פקודות SSH מוכנות בעזרת לולאת for, ומרכזים את הכתובת הביתית במשתנה.
נושאי הסיכום המוצגים בשיעור:
1. המטרה של השכפול: בהרצאה זו לומדים איך לשכפל את שרת ה-web שלנו ב-Terraform למקרה שאחד נופל והשני עובד במקומו, והשאלה היא איך להגיד ל-Terraform שרוצים שלושה שרתים כאלה.
2. השימוש ב-count: התשובה פשוטה, באים לאובייקט שמייצר את המכונות הווירטואליות של AWS ואומרים לו count שווה שלוש, והוא ייצר שלוש מכונות וירטואליות, שלושה אובייקטים מהסוג הזה.
3. תגית ייחודית עם count.index: צריך לוודא שהתגית של כל מכונה תהיה ייחודית, ולכן מוסיפים לשם סימן מיוחד שהופך טקסט פשוט לפקודה לביצוע וכותבים בו count.index, שהוא המספר הסידורי של המכונה הנוכחית, וכך המכונות מקבלות שמות מסודרים.
4. הפלט של כל הכתובות: כשיש שלוש מכונות ה-output שמדפיס את הכתובת הציבורית מקבל סימן כוכבית בתוך סוגריים מרובעים שמשמעותו כל האובייקטים, והוא ידפיס רשימה, מערך, של כל הכתובות, וב-TF plan רואים שהוא עומד להוסיף שני אובייקטים חדשים ולהדפיס את הרשימה, כשהכתובות של החדשות ידועות רק אחרי ה-apply.
5. מספור החל מאחד: ברירת המחדל היא מקף אפס, מקף אחד וכך הלאה, ולא נעים, ולכן מוסיפים לפקודה פלוס אחד, כי הסוגריים המסולסלות אומרות לו לקחת את האינדקס הנוכחי ולהוסיף לו אחד, וכך המכונה השלישית תיקרא שרת שלוש למרות שהאינדקס שלה שני, והמכונה הקיימת יחליפו את השם, מה שמסומן בטילדה ב-plan.
6. הפקת פקודות SSH מוכנות: אפשר לשכלל את ה-output כך שיפלוט לא סתם כתובות אלא פקודות מוכנות, קוראים לו בשם שמתאר פקודת SSH, ובערך שלו בונים מערך ידנית שממלאים בלולאת for שרצה על כל הכתובות, וכל כתובת נכנסת למשתנה משלה, ולכל כתובת מופקת שורה של פקודת חיבור מלאה, וב-plan רואים שהפלט המתאים נבנה עבור המכונה הקיימת והחדשות יקבלו אותו אחרי ה-apply.
7. ביצוע ובדיקה בענן: מריצים apply עם אישור אוטומטי, לפני זה הייתה מכונה אחת עובדת ואחרי זה רואים בענן שלושה שרתים כשהשניים החדשים במצב אתחול, ולוקחים את הכתובת של כל שרת, מכניסים לדפדפן והאתר עולה, כך שיש שלושה שרתים שעובדים במקביל על אותו דאטאבייס וכולם עלו באוטומט, וגם בודקים שפקודות ה-SSH שהופקו מאפשרות להתחבר לשרת השני והכל תקין.
8. הכתובת הביתית כמשתנה: הכתובת הביתית מתחלפת ואז צריך לחפש בכל הקוד איפה היא כתובה, ולכן יוצרים משתנה חדש לכתובת הבית עם ערך ברירת מחדל, ומבחוץ בזמן ה-apply אפשר להחליף לו את הערך בעזרת דגל העברת משתנה ולתת את הכתובת הנוכחית, ובתוך ה-RDS ובתוך ה-EC2 שולפים אותו מהמשתנה.
9. הקובץ המרכזי לכל ההתאמות: עכשיו אין צורך לשבור את הראש איפה הכתובות היו כתובות בקוד, וכל מה שצריך לשנות כשכתובת מתחלפת הוא להיכנס לקובץ המשתנים ולהתאים אותו לסביבה הנוכחית, כולל המפתח, סוג מכונה חזקה יותר, הכתובת הביתית ומזהה ה-VPC של הענן.
10. חזרה על var מול local ובדיקת התאוששות: יש משתנים מסוג var שניתנים להגדרה מבחוץ ומשתנים מסוג local שהם מקומיים בתוך התוכנה ולא ניתנים להגדרה מבחוץ, מיועדים לעבודה פנימית ולא חשופים ללקוחות, שהם האנשים שרוצים להשתמש בקוד בלי להיכנס לדקויות, וגם אחרי הפעלה מחדש של אחת המכונות, גם מהממשק וגם עם פקודת אתחול מתוך השרת, האתר עולה כמו שצריך, ובסוף יש לנו שלושה שרתים עובדים במקביל וכל מה שהיה צריך להוסיף זה את ה-count שווה שלוש.
סיכום:
בשיעור זה שכפלנו את שרת ה-web ב-Terraform בעזרת count ו-count.index, דאגנו לשמות ייחודיים ומספור שמתחיל מאחד, הפקנו בעזרת לולאת for פלט של פקודות SSH מוכנות לכל שרת, הרצנו plan ו-apply וקיבלנו שלושה שרתים אמיתיים שעובדים במקביל על אותו דאטאבייס ומתאוששים מהפעלות מחדש, והשלמנו את ריכוז הנתונים במשתני var כולל הכתובת הביתית, תוך הבנת ההבדל מול local.
SR13892HE

פרקי ההרצאה: שכפול מכונות וירטואלית ב-Terraform פרויקט NodeJS

  1. 00:00

    שכפול שרתי web לגיבוי

  2. 00:40

    מתן שמות ייחודיים עם count.index

  3. 01:15

    בדיקת התוכנית עם TF plan

  4. 01:57

    התחלת מספור השרתים מאחד

  5. 02:32

    אימות שמות המכונות

תמלול ההרצאה: שכפול מכונות וירטואלית ב-Terraform פרויקט NodeJS

הטקסט המלא של הדקות הראשונות בהרצאה «שכפול מכונות וירטואלית ב-Terraform פרויקט NodeJS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם. בהרצאה זו נלמד איך לשכפל שרת web שלנו ב-Terraform למקרה שאחד נופל, השני עובד במקומו. השאלה איך להגיד ל-Terraform שאני רוצה שלושה שרתים כאלו, והאמת זה מאוד, מאוד פשוט.

  2. 00:17

    אנחנו באים לאובייקט של AWS Instance. זה שמייצר לנו את המכונות הווירטואליות ואומרים לו count שווה שלוש והוא הולך לייצר לי שלוש מכונות וירטואליות, שלושה אובייקטים מהסוג הזה, אבל צריך לוודא פה למטה שה-tag יהיה ייחודי.

  3. 00:34

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

  4. 00:51

    האמת זה מספיק, אבל פה למטה אני מדפיס כתובת IP, את ה-public IP של המכונה. עכשיו מה קורה כשיש לי שלוש מכונות? אם הייתי רוצה סתם להדפיס, הייתי יכול לכתוב output value שווה ולעשות פה סוגריים מרובעים כוכבית.

  5. 01:10

    נקרא לזה public IP וזה ידפיס לי בכוכבית את כל האובייקטים. בואו נבדוק שזה באמת תקין, שאני לא מתבלבל. נעשה TF plan. נראה שאין שגיאה ונראה מה הוא מתכנן לעשות.

  6. 01:23

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

  7. 01:37

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

  8. 01:53

    הוא הולך גם להחליף tag למכונה קיימת מсерבר פשוט לсерבר מקף אפס. שרת אפס, שרת אחד, שרת שתיים. האמת שאני לא אוהב את זה שזה כותב לי מקף אפס, מקף אחד, מקף שתיים.

  9. 02:06

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

  10. 02:18

    בואו נראה שזה יעבוד לנו. נעשה לו TF plan. ב-TF plan שוב אנחנו רואים ש-public IPs הולכים להיות כרשימה. זה טוב.

  11. 02:26

    הוא הולך לייצר מכונה שנייה ולתת לה תגיד שהשם שלה זה שלוש. יופי, זה מה שרציתי, שהמכונה השלישית תיקרא server שלוש למרות שהאינדקס שלו זה שתיים, כי הוא סופר מאפס וזה לא כיף לי.

  12. 02:41

    המכונה השנייה תיקרה server שתיים למרות שהאינדקס שלה אחד, ומכונה אפס, זאתי שקיימת עכשיו, הוא יחליף לה שם. אתם רואים, טילדה זה להחליף שם. מסתם שרת לשרת מספר אחד.

  13. 02:54

    הדבר האחרון שאני אלמד אתכם זה איך לפלוט את

לקורס המלא: קורס Terraform אונליין ל‑DevOps

ההרצאה הקודמת: משתנים מסוג var - ב-Terraform - פרויקט NodeJS

ההרצאה הבאה: הרצת סקריפט SQL - בתוך Terraform - פרויקט NodeJS

הרצאות קשורות מקורסים אחרים

  • שכפול מכונה וירטואלית - VMware
  • הסבר על מכונות וירטואליות
  • מבוא ל-NodeJS
  • סיכום ב-3 דקות - שכפול מחשב - ImageX

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio