PracticU

פקודת Output
ב-Terraform
פרויקט NodeJS

בלי כתוביותעם כתוביות
PracticU › קורס Terraform - DevOps - Azure & AWS › פקודת Output ב-Terraform פרויקט NodeJS
מילון מושגים:
Terraform - כלי להגדרת תשתית כקוד, שמאפשר ליצור ולנהל משאבי ענן ותשתית בעזרת קובצי תצורה.
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
פורט - מספר שמזהה שירות או תהליך מסוים בתוך מחשב, ומאפשר לכוון תעבורת רשת ליעד הנכון. למשל פורט 80 ל-HTTP.
שם משתמש - מזהה ייחודי שמשתמש מזין כדי להזדהות במערכת, לרוב יחד עם סיסמה.
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.
מכונה וירטואלית - מחשב מדומה שרץ כתוכנה על גבי מחשב פיזי, עם מערכת הפעלה ומשאבים משלו, בבידוד מהמערכת המארחת.
SSH - פרוטוקול לחיבור מרוחק ומוצפן למחשב, בעיקר לשרתי Linux, לצורך ניהול דרך שורת הפקודה.

פקודת Output ב-Terraform פרויקט NodeJS
אחרי terraform apply נוח לקבל על המסך את פרטי המסד שנוצר, ואפילו פקודת חיבור מוכנה. ההרצאה בונה כמה בלוקי output ופותרת בעיה בשם ה-endpoint.
השלבים העיקריים
1. output בסיסי: כותבים output עם שם (למשל rds_endpoint) וערך מתוך אובייקט ה-RDS, בצורה סוג משאב ושם נקודה שדה. אפשר להוסיף עוד outputs, למשל שם ה-database, ושם המשתמש.
2. בדיקה: tf plan מציג את הפלט: שם ה-database (Practicu), ה-endpoint (שם שרת, נקודתיים ופורט) וה-username.
3. פקודת mysql מוכנה: output בשם MySQL Command שמכיל את כל הפקודה, ובתוכה ${...} ששולף את ה-endpoint מהאובייקט.
4. הבעיה: ה-endpoint כולל נקודתיים ופורט, והפקודה נכשלת עם שם שרת לא תקין. צריך להסיר את הנקודתיים.
5. הפתרון עם locals: בבלוק locals מגדירים משתנה עזר שהוא split של ה-endpoint לפי נקודתיים, ולוקחים את רכיב 0 (הראשון, כי סופרים מאפס), שהוא שם השרת בלבד. בפקודה משתמשים במשתנה הזה במקום ב-endpoint המקורי.
6. תוצאה: אחרי ניקוי המסך ו-tf plan יש פקודה mysql -h עם שם שרת נקי, שאפשר להריץ מיד. אחרי apply נבדק ש-select * from Practicu.users מחזיר נתונים.
מצב בסוף
יש MySQL עם נתונים, ושרת (מכונה וירטואלית) שנגיש ב-SSH, אבל ריק. אין ביניהם קשר, והשרת לא יודע איפה ה-MySQL. את האתר מתקינים בהרצאה הבאה.
אחרי ההרצאה אפשר להדפיס מ-Terraform פקודת חיבור ל-MySQL שמוכנה להרצה.

פרקי ההרצאה: פקודת Output ב-Terraform פרויקט NodeJS

  1. 00:00

    פלט אוטומטי אחרי Terraform Apply

  2. 00:37

    פליטת ה-endpoint של המכונה

  3. 01:14

    פליטת database name ו-username

תמלול ההרצאה: פקודת Output ב-Terraform פרויקט NodeJS

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

  1. 00:02

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

  2. 00:18

    אנחנו רוצים לקבל את זה בפלט מסודר ישר אחרי Terraform Apply. אז אני כותב output ואומר שאני רוצה שיפלוט לי את ה-endpoint, את השם של המכונה. במקום להיכנס ל-RDS בתוך AWS Console עד שאני אעבור אימות, זיהוי, אכנס לכאן ולשלוף את השם של הדאטה בייס, אני ישר אגיד ל-Terraform: "תרשום לי את זה על המסך." הוא ירשום לי RDS Endpoint שווה.

  3. 00:45

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

  4. 01:02

    דרך אגב, אם אני רוצה עוד איזשהו נתון לפלוט, אני יכול לרשום פה עוד output. נניח נקרא לו rds database name. אני רוצה שייקח לי ערך, שוב מתוך AWS Database Instance, נקודה database name.

  5. 01:17

    בקיצור, יש לי פה אפשרות לפלוט כמה דברים החוצה. מה שמעניין אותי, אני אירח database name, username, שם של endpoint. ועכשיו TF Plan יראה לי מה יצא לנו.

  6. 01:29

    יצא לנו output, database name, Practicu, endpoint, השם של שרת, נקודתיים, שם של פורט וגם ה-username. נהדר, זה מה שרציתי. דבר אחרון שאני רוצה זה לחסוך לי את הכתיבה של כל הפקודה הזאת.

  7. 01:44

    אני לוקח את הפקודה הזאת ואני רוצה שהוא ירשום לי אותה באוטומט. אני אקרא לזה MySQL Command וה-value שלה

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

ההרצאה הקודמת: חיבור ל-MySQL - פרויקט NodeJS

ההרצאה הבאה: סקריפט שמתקין npm - פרויקט NodeJS

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

  • Console Output
  • מבוא ל-NodeJS
  • פקודת Select
  • פקודת ls בלינוקס

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

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