
terraform init כדי להוריד את הפרובידר של AWS.database_seed.sql עם פקודות ה-SQL. כדי שאפשר יהיה להריץ אותו כמה פעמים בלי שורות כפולות, מגדירים בטבלה מפתח ייחודי unique_email על השדה email, ומשתמשים ב-Ignore כדי להתעלם משגיאת כפילות.terraform_data (בשמו הישן Null Resource). הוא לא עושה דבר בענן ומחכה לטריגר. כשהטריגר מופעל, הוא מריץ פקודה מקומית ב-local-exec.mysql -h עם כתובת ה-RDS, -u עם שם המשתמש ו--p צמוד לסיסמה בלי רווח. הערכים נלקחים מאובייקט ה-RDS. החץ שמאלה < מזרים לתוך ה-standard input של mysql את תוכן הקובץ, והנתיב שלו נבנה מה-path module ועוד /database_seed.sql.terraform apply מריצים את הסקריפט מחדש.destroy מלא, terraform apply -auto-approve הקים דאטה בייס, שלושה שרתי web והכניס נתונים. הסתיים עם 16 resources, והאתר הציג את הנתונים.create table לא ניתן להרצה כפולה. התיקון הוא להוסיף if not exists.הטקסט המלא של הדקות הראשונות בהרצאה «הרצת סקריפט SQL בתוך Terraform פרויקט NodeJS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם. בהרצאה זו נעשה אוטומציה לפקודות SQL לדאטה בייס של SQL בתוך Terraform, כי זה למעשה הדבר האחרון שעשינו בצורה ידנית. השאלה איך נעשה את הפקודות האלו אוטומט בזמן יצירה של ה-RDS של הדאטה בייס בענן.
קודם כל בואו ניכנס לתיקייה של Terraform. שמתי את זה בתיקייה נפרדת רק בשביל להדגיש לכם שזה לא קשור לשום פרויקט שהיה לנו לפני כן. פעם הרמנו את כל המערכת מקומית והיה לנו Public Folder ו-package json ו-env.
כל זה היה פעם מקומית בשרת. עכשיו עשינו את כל זה בענן ולכן התיקייה הזאת היא מיותרת מבחינתי. כל מה שאני צריך לעבודה כרגע זה תיקייה עם קבצי Terraform בלבד.
אתם רואים? יש פה רק ארבע קבצי Terraform וזהו. בתוכה אני עושה CMD וכותב terraform init שיוריד לי את הפרובידר שמתחבר ל-AWS. בואו נעשה פה קובץ טקסט חדש, קובץ SQL.
נקרא לו database_seed. Seed זה הנתונים הראשוניים נקודה SQL. אתם יכולים לתת לו כל שם שאתם רוצים ונפתח את הקובץ הזה ב-Notepad ונכניס את הפקודות האלו.
האמת, אני רוצה לשכלל את הסקריפט הזה למקרה שהוא ירוץ כמה פעמים, שלא יעשה לי שורות כפולות של אותו user פעמיים ואני מכניס לו ברמת טבלה, ברמת יצירת טבלה unique key. מפתח ייחודי בשם unique_email זה השם של המפתח והוא חל על שדה בשם email.
זה אומר אסור שני שורות עם אותה כתובת מייל. ככה אני מונע כפילות. גם אם השורה הזאת תופעל פעמיים או שלוש, הוא לא יכניס לי את אותו בן אדם כמה פעמים כי השדה הזה של email עם הערך הזה אסור שיופיע פעמיים.
רק הבעיה היא שאם זה יקרה הוא יזרוק לי הודעת שגיאה. אני אומר לו פה Ignore, תתעלם אם יש הודעת שגיאה ותמשיך הלאה. זה למעשה מאפשר לי להריץ את הסקריפט הזה