PracticU

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

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

הרצת סקריפט SQL בתוך Terraform פרויקט NodeJS
ההרצאה מראה איך להריץ אוטומטית סקריפט SQL על הדאטה בייס מתוך Terraform, בזמן יצירת ה-RDS, ואיך להריץ אותו שוב בכל פעם שהקובץ משתנה.
השלבים העיקריים
1. תיקייה נקייה: העבודה מתבצעת בתיקייה שמכילה רק את קבצי ה-Terraform (ארבעה קבצים). מריצים בה terraform init כדי להוריד את הפרובידר של AWS.
2. קובץ הנתונים הראשוניים: יוצרים קובץ database_seed.sql עם פקודות ה-SQL. כדי שאפשר יהיה להריץ אותו כמה פעמים בלי שורות כפולות, מגדירים בטבלה מפתח ייחודי unique_email על השדה email, ומשתמשים ב-Ignore כדי להתעלם משגיאת כפילות.
3. משאב Terraform Data: בקובץ ה-RDS מוסיפים משאב terraform_data (בשמו הישן Null Resource). הוא לא עושה דבר בענן ומחכה לטריגר. כשהטריגר מופעל, הוא מריץ פקודה מקומית ב-local-exec.
4. הפקודה: mysql -h עם כתובת ה-RDS, -u עם שם המשתמש ו--p צמוד לסיסמה בלי רווח. הערכים נלקחים מאובייקט ה-RDS. החץ שמאלה < מזרים לתוך ה-standard input של mysql את תוכן הקובץ, והנתיב שלו נבנה מה-path module ועוד /database_seed.sql.
5. טריגרים: הפקודה רצה כשה-ID של הדאטה בייס משתנה, וגם כשה-hash (MD5) של הקובץ משתנה. לכן שינוי בקובץ ואז terraform apply מריצים את הסקריפט מחדש.
6. בדיקה מאפס: אחרי destroy מלא, terraform apply -auto-approve הקים דאטה בייס, שלושה שרתי web והכניס נתונים. הסתיים עם 16 resources, והאתר הציג את הנתונים.
טעויות נפוצות
- אחרי הוספת משתמש לקובץ, הרצה חוזרת נכשלה בשגיאה "table already exists" בשורה 4, כי create table לא ניתן להרצה כפולה. התיקון הוא להוסיף if not exists.
- פרטי ה-credentials של הענן נמצאים בתיקיית המשתמש ולא בתיקייה המשותפת, ולכן צריך לדאוג להם בנפרד.
אחרי ההרצאה אפשר להקים תשתית ענן שלמה עם דאטה בייס ונתונים בפקודה אחת, וזה שימושי לאתר DR או להדגמה ללקוח.

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

  1. 00:00

    אוטומציה של פקודות SQL ב-Terraform

  2. 00:39

    הכנת תיקיית Terraform נקייה

  3. 01:17

    מניעת כפילות עם unique key

  4. 01:56

    התעלמות משגיאות עם Ignore

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

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

  1. 00:02

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

  2. 00:21

    קודם כל בואו ניכנס לתיקייה של Terraform. שמתי את זה בתיקייה נפרדת רק בשביל להדגיש לכם שזה לא קשור לשום פרויקט שהיה לנו לפני כן. פעם הרמנו את כל המערכת מקומית והיה לנו Public Folder ו-package json ו-env.

  3. 00:39

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

  4. 00:52

    אתם רואים? יש פה רק ארבע קבצי Terraform וזהו. בתוכה אני עושה CMD וכותב terraform init שיוריד לי את הפרובידר שמתחבר ל-AWS. בואו נעשה פה קובץ טקסט חדש, קובץ SQL.

  5. 01:05

    נקרא לו database_seed. Seed זה הנתונים הראשוניים נקודה SQL. אתם יכולים לתת לו כל שם שאתם רוצים ונפתח את הקובץ הזה ב-Notepad ונכניס את הפקודות האלו.

  6. 01:18

    האמת, אני רוצה לשכלל את הסקריפט הזה למקרה שהוא ירוץ כמה פעמים, שלא יעשה לי שורות כפולות של אותו user פעמיים ואני מכניס לו ברמת טבלה, ברמת יצירת טבלה unique key. מפתח ייחודי בשם unique_email זה השם של המפתח והוא חל על שדה בשם email.

  7. 01:39

    זה אומר אסור שני שורות עם אותה כתובת מייל. ככה אני מונע כפילות. גם אם השורה הזאת תופעל פעמיים או שלוש, הוא לא יכניס לי את אותו בן אדם כמה פעמים כי השדה הזה של email עם הערך הזה אסור שיופיע פעמיים.

  8. 01:56

    רק הבעיה היא שאם זה יקרה הוא יזרוק לי הודעת שגיאה. אני אומר לו פה Ignore, תתעלם אם יש הודעת שגיאה ותמשיך הלאה. זה למעשה מאפשר לי להריץ את הסקריפט הזה

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

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

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

  • יצירת קובץ סקריפט SQL
  • הרצת סקריפט גיבוי - SCCM Package Script
  • מבוא ל-NodeJS
  • סקריפט עם לולאת for

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

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