פריסת התשתית באמצעות הורדה של קובץ Terraform מהמסוף

Google Cloud ההגדרה עוזרת לאדמינים להגדירGoogle Cloud תשתית באמצעות תהליך מודרך, ולפרוס אותה ישירות מ Google Cloud המסוף או להוריד אותה כקובץ Terraform.

במאמר הזה מוסבר איך פורסים את קובץ ההגדרה של Google Cloud Terraform.

לפני שמתחילים

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

אם כבר פרסתם את ההגדרות הבסיסיות על ידי לחיצה על הלחצן Deploy במסוף ואתם רוצים לפרוס את ההגדרות מקובץ Terraform שהורדתם, באמצעות צינור עיבוד נתונים משלכם, עליכם לבצע את הפעולות הבאות:

  • מורידים את קובץ המצב של Terraform שנוצר במסוף.
  • כוללים את קובץ המצב שהורדתם בתהליך צינור עיבוד הנתונים שלכם.

למידע נוסף, ראו פריסה של קובץ התצורה של Terraform שהורדתם אחרי פריסה מהמסוף.

פריסת Terraform באמצעות Cloud Shell

סביבת Cloud Shell כוללת מראש התקנה מאומתת של Terraform, כך שתוכלו להתחיל בקלות.

  1. במדריך ההתקנה במסוף, לוחצים על Download as Terraform ושומרים את התצורה.
  2. פותחים את Cloud Shell:
  3. יוצרים ספרייה חדשה ב-Cloud Shell ועוברים אליה:

    mkdir cloud-foundation-example && cd cloud-foundation-example
    
  4. מעלים את קובץ התצורה של Terraform שהורדתם בשלב 1.

    ב-Cloud Shell, בתפריט More לוחצים על Upload ואז על Choose Files ובוחרים את קובץ התצורה של Terraform. בוחרים את התיקייה שיצרתם בשלב הקודם בתור ספריית היעד, ולוחצים על Upload.

  5. חשוב לוודא שאתם נמצאים בספרייה cloud-foundation-example.

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

    כדי ליצור את הקטגוריה של Cloud Storage, מריצים את הפקודה הבאה:

    gcloud storage buckets create gs://tf-state-PROJECT_ID
    
  7. מגדירים תצורה בקצה עורפי של Terraform בקובץ backend.tf, ומחליפים את המשתנה PROJECT_ID כך שיתאים למזהה הפרויקט שבו השתמשתם בשלב הקודם. לפרטים נוספים, ראו אחסון מצב של Terraform ב-Cloud Storage.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. מריצים את terraform init. התהליך הזה מפעיל את ספריית העבודה שמכילה את קובצי התצורה של Terraform ואת הקצה העורפי.

  9. כדי לראות את המשאבים שנוצרו ב-Terraform, מריצים את הפקודה terraform plan. פלט לדוגמה:

    ...
    Plan: 6 to add, 0 to change, 0 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. כדי להחיל את התצורה מריצים את הפקודה terraform apply, שפורסת את המשאבים שלכם ב-Google Cloud. כשמופיעה בקשה, כותבים yes.

  11. במסוף Google Cloud מוודאים שהמשאבים פרוסים בחשבון או בפרויקט שלכם.

פריסה מחדש של Terraform באמצעות Cloud Shell

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

  1. במדריך ההתקנה במסוף, לוחצים על Download as Terraform ושומרים את התצורה.
  2. פותחים את Cloud Shell:
  3. יוצרים ספרייה חדשה ב-Cloud Shell ועוברים אליה:
    mkdir cloud-foundation-example-redeploy && cd cloud-foundation-example-redeploy
    
  4. מעלים את קובץ התצורה של Terraform שהורדתם בשלב 1.

    ב-Cloud Shell, בתפריט More לוחצים על Upload ואז על Choose Files ובוחרים בקובץ התצורה של Terraform. בוחרים את התיקייה שיצרתם בשלב הקודם בתור ספריית היעד, ולוחצים על Upload.

  5. חשוב לוודא שאתם נמצאים בספרייה cloud-foundation-example-redeploy.

  6. מוודאים שקטגוריית הקצה העורפי וקובץ המצב שיצרתם ב-Cloud Storage נמצאים.

    gcloud storage ls gs://tf-state-PROJECT_ID/terraform/state/
    
    פלט לדוגמה:
    gs://tf-state-PROJECT_ID/terraform/state/default.tfstate
    

  7. מגדירים תצורה בקצה עורפי של Terraform בקובץ backend.tf, תוך שימוש חוזר באותה קטגוריה ובאותה קידומת.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. מריצים את terraform init. התהליך הזה מפעיל את ספריית העבודה שמכילה את קובצי התצורה של Terraform ואת הקצה העורפי.

  9. כדי לראות אילו משאבים נוצרו, שונו או הוסרו ב-Terraform, מריצים את הפקודה terraform plan. פלט לדוגמה:

    ...
    Plan: 2 to add, 3 to change, 4 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. כדי להחיל את התצורה מריצים את הפקודה terraform apply, שפורסת את המשאבים שלכם ב-Google Cloud. כשמופיעה בקשה, כותבים yes.

  11. במסוף Google Cloud מוודאים שהמשאבים פרוסים בחשבון או בפרויקט שלכם.

פריסה של קובץ התצורה של Terraform שהורדתם אחרי פריסה מהמסוף

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

כך מורידים את קובץ המצב ומשתמשים בו:

  1. כדי להוריד את קובץ המצב של Terraform, מבצעים את הפעולות הבאות במאמר ניהול קובץ המצב של Terraform:

    1. נועלים את הפריסה.
    2. מורידים את קובץ המצב.
    3. ביטול הנעילה של הפריסה
  2. בקטע אחסון מצב של Terraform בקטגוריה של Cloud Storage תוכלו לקרוא איך מעבירים את קובץ המצב שהורדתם לקטגוריה של Cloud Storage.

  3. במאמר פריסה מחדש של Terraform באמצעות Cloud Shell מוסבר איך לפרוס מחדש את ההגדרות של Terraform.

פתרון בעיות בפריסות של Terraform

פריסת Terraform עם משאבים קיימים

אם קובץ ההגדרות של Terraform שהורדתם מנסה ליצור משאבים שכבר קיימים, תתבצע יציאה מ-Terraform עם קוד השגיאה 409. כדי לפתור את השגיאות, אפשר למחוק את המשאב באמצעותGoogle Cloud המסוף או ה-CLI של gcloud, ולאחר מכן להחיל מחדש את ההגדרות של Terraform. לחלופין, אם המשאבים האלה קריטיים ולא ניתן למחוק אותם, תוכלו לייבא את המשאבים למצב של Terraform.

ניהול התשתית כקוד באמצעות Terraform, ‏Cloud Build ו-GitOps

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

  1. הגדרת מאגר משלכם ב-GitHub.
  2. הגדרת Terraform לאחסון מצבים בקטגוריות של Cloud Storage.
  3. מתן הרשאות לחשבון השירות ב-Cloud Build.
  4. חיבור של Cloud Build למאגר שלכם ב-GitHub.
  5. שינוי התצורה של הסביבה בסביבה נפרדת (feature branch).
  6. ליישם שינויים בסביבת הפיתוח.
  7. ליישם שינויים בסביבת הייצור.