PracticU

קובץ env ב-Terraform
פרויקט NodeJS

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

קובץ env ב-Terraform פרויקט NodeJS
בהרצאה הזו עוברים מיצירה ידנית של קובץ .env ליצירה אוטומטית שלו בתוך סקריפט ה-User Data של Terraform, כך שערכי החיבור ל-DATABASE נשלפים ישירות מהאובייקטים של התשתית ולא נכתבים ביד.
השלבים העיקריים
1. כתיבת השורות לקובץ: משתמשים בפקודה echo ומפנים את הפלט ל-.env. שני חצים (>>) מוסיפים שורה בסוף הקובץ, וחץ אחד דורס את מה שיש בו.
2. שליפת הערכים מהאובייקט: במקום לכתוב ADMIN ידנית, שולפים את שם המשתמש, הסיסמה ושם ה-DATABASE מאובייקט ה-RDS באמצעות ${...}. כך שינוי עתידי נעשה במקום אחד בלבד, ולא צריך לחפש את הערך בכל הקוד.
3. שם השרת בלי פורט: ה-ENDPOINT של ה-RDS כולל נקודתיים ופורט. לכן משתמשים במשתנה המקומי שכבר חושב ב-locals, שמפצל את הערך ולוקח רק את החלק הראשון. פורט 80 ושם הטבלה USERS נשארים קבועים.
4. החלפת המכונה בכל שינוי: ה-TF PLAN הראה שרק משנים את המכונה ולא מחליפים אותה, אבל סקריפט User Data רץ רק ביצירה. מוסיפים את המאפיין user_data_replace_on_change, וכך שינוי בסקריפט מוחק את המכונה ויוצר אותה מחדש. מכונת ה-SQL לא נפגעת.
5. בדיקה על המכונה החדשה: אחרי TF APPLY נכנסים ב-SSH (כתובת ה-IP השתנתה), עוברים ל-root ובודקים עם cat שהקובץ .env נוצר נכון ושם השרת תואם ל-RDS. NPM START מעלה את האתר והנתונים נשלפים.
שימו לב
- ה-NPM START שנכתב בסוף הסקריפט ירוץ רק פעם אחת, בהפעלה הראשונה של המכונה. אחרי Stop או Reboot האתר לא יעלה, וצריך להפעיל אותו מחדש בכל אתחול. הפתרון בהרצאה הבאה.
- כדי לראות קבצים מוחבאים כמו .env משתמשים ב-ll -a.
אחרי ההרצאה אפשר ליצור את קובץ .env אוטומטית מתוך Terraform ולהבין למה הוא חייב להיווצר בסקריפט.
השיעור הבא בקורס: סקריפט ב-AWS CLI חלק 1 פרויקט NodeJS

פרקי ההרצאה: קובץ env ב-Terraform פרויקט NodeJS

  1. 00:00

    משתני הסביבה שהאתר צריך

  2. 00:42

    כתיבת קובץ env בעזרת echo

  3. 01:19

    השלמת כל משתני הסביבה

  4. 01:53

    שליפת ה-username מהאובייקט

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

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

  1. 00:02

    שלום לכולם. בסרטון קודם יצרנו קובץ ENV באופן ידני. בתוך הקובץ יש לנו משתני סביבה שהאתר שלנו צריך. DB HOST, שם של שרת SQL, שם של USER.

  2. 00:16

    כל משתני הסביבה האלו בדקנו שהשרת צריך. עשינו NPM Start, ואז NPM Start יפעיל לנו את ה-SERVER.JS. אפשר לראות פה NODE SERVER.JS. בתוך SERVER.JS הוא יקרא את כל אלו וידע להתחבר ל-DATABASE, והכול עובד.

  3. 00:33

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

  4. 00:47

    אז אנחנו מתחילים עם הפקודה ECO שם של שרת, נניח AAA. עוד מעט נעשה את השם האמיתי, ואת כל השורה הזאת אנחנו שומרים בקובץ נקודה ENV. אחרי זה אנחנו עושים אותו דבר עם ה-USERNAME.

  5. 01:02

    נניח BBB. תכף נכניס נתונים אמיתיים. שני חצים נקודה ENV. שני חצים זה אומר להוסיף בסוף הקובץ. חץ אחד אומר לדרוס את מה שיש שמה.

  6. 01:14

    אז זה למעשה יוסיף עוד שורה בקובץ. אנחנו צריכים גם סיסמה. נניח CCC לתוך ENV. מה היה לנו שמה עוד? HOST, USER, PASSWORD, NAME, DATABASE NAME לתוך קובץ ENV, ושניים האחרונים, TABLE NAME שווה USERS.

  7. 01:32

    זה קבוע, ופורט שמונים גם קבוע. זאת אומרת, את אלו אני לא הולך לשנות. אבל A, B, C, D זה סתם משהו שכתבתי, שעכשיו נחשוב ביחד מה לכתוב כאן. בואו נראה איפה אני יכול למצוא DATABASE USERNAME.

  8. 01:47

    הוא נמצא פה בתוך קובץ RDS. תאורטית אני יכול לקחת את ה-ADMIN הזה ולהכניס אותו פה. DATABASE USER שווה ADMIN, וזה נכון וזה יעבוד.

  9. 01:57

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

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

ההרצאה הקודמת: הגדרת קובץ env - פרויקט NodeJS

ההרצאה הבאה: סקריפט ב-AWS CLI - חלק 1 - פרויקט NodeJS

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

  • קובץ הגדרות כללי ב-NodeJS
  • קובץ Manifest
  • קובץ YAML - Kubernetes
  • שחזור קובץ ב-Veeam

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

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