אוטומציה של פריסת משאבי Google Cloud

בדף הזה מוסבר איך מגדירים טריגרים של Cloud Build כדי לבצע פריסה אוטומטית של משאבי Google Cloud באמצעות המאגרים הקיימים ו-Infrastructure Manager.

אחרי ש-Infra Manager מתחבר למאגר Git, בקשות משיכה מפעילות תצוגה מקדימה של פריסה, ופעולות Commit מפעילות יצירה של תצוגה מקדימה של פריסה או עדכון של הפריסה.

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

  1. מוודאים ש-Infra Manager מופעל.
  2. מוודאים שיש לכם את הרשאות ה-IAM שנדרשות ליצירת פריסות:
    • roles/config.admin
  3. מוודאים שיש לכם חשבון שירות עם ההרשאות הנדרשות. פרטים נוספים זמינים במאמר הגדרת חשבון השירות.
  4. מאתרים את מאגר ה-Git הקיים שכולל את התצורה של Terraform. כשמגדירים את האוטומציה שמתוארת בדף הזה, זוהי הגדרת Terraform ש-Infra Manager משתמש בה כדי לעדכן משאבים.
  5. מומלץ: להגדיר הגנה על הסתעפות במאגר Git.

הפיכת הפריסה של משאבים ל Google Cloud אוטומטית

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

כשההגדרה מסתיימת, בקשת משיכה (pull request) במאגר Git גורמת ל-Infra Manager ליצור תצוגה מקדימה של הפריסה. כשממזגים בקשת משיכה, Infra Manager פורס את הגדרת Terraform באופן אוטומטי.

מודול im_cloudbuild_workspace יוצר כמה משאבים, כולל:

  • חיבור מאגר של Cloud Build.
  • טריגר לפיתוח גרסת Build של Cloud שמופעל כשנוצרת בקשת משיכה. הטריגר הזה גורם ל-Infra Manager ליצור פריסת תצוגה מקדימה באמצעות תצורת Terraform במאגר.
  • טריגר לפיתוח גרסת Build ב-Cloud שמופעל כשממזגים בקשת משיכה (pull request) עם מאגר Git. הטריגר הזה גורם ל-Infra Manager ליצור או לעדכן את הפריסה באמצעות הגדרות Terraform במאגר.

כדי לבצע אוטומציה של פריסות הגדרות Terraform כשהמאגר מתעדכן:

  1. מתקינים את אפליקציית Cloud Build GitHub בחשבון GitHub או בארגון שבבעלותכם.
  2. יצירת אסימון גישה אישי.

    חשוב לוודא שאתם מגדירים את האסימון ללא תאריך תפוגה, ובוחרים את ההרשאות הבאות כשמוצגת לכם בקשה ב-GitHub: ‏ repo ו-read:user. אם האפליקציה מותקנת בארגון, חשוב לבחור גם את ההרשאה read:org.

    אחרי שיוצרים את אסימון הגישה האישי, שומרים אותו במקום בטוח. משתמשים באסימון שנוצר בשלבים הבאים.

  3. מעתיקים את המודול im_cloudbuild_workspace לקובץ main.tf במאגר Git:

    module "im-workspace" {
     source = "terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace"
     version = "~> 7.0"
    
     project_id = "PROJECT_ID"
     deployment_id = "DEPLOYMENT_ID"
     im_deployment_repo_uri = "GIT_REPO"
     im_deployment_ref = "REF"
    
     github_app_installation_id = "GIT_APP_ID"
     github_personal_access_token = "TOKEN"
    }
    

    מחליפים את:

    • PROJECT_ID: מזהה הפרויקט שבו פועל Infrastructure Manager.
    • DEPLOYMENT_ID: מזהה הפריסה שאתם מציינים. פרטים על אילוצים לגבי מזהה הפריסה מופיעים במאמר בנושא שם הפריסה.
    • GIT_REPO: ה-URI של מאגר Git.
    • REF: ההפניה ל-Git של ההגדרה. ההפניה היא אופציונלית. אם לא מציינים את ההפניה, המערכת משתמשת בענף שמוגדר כברירת מחדל במאגר Git.
    • GIT_APP_ID: מזהה ההתקנה של אפליקציית Cloud Build GitHub שמשמשת להפעלת טריגרים של בקשות משיכה ודחיפה.
    • TOKEN: אסימון גישה אישי למאגר GitHub. אם מציינים, יוצרת סוד ב-Secret Manager.
  4. יוצרים פריסה (או מעדכנים את הפריסה הקיימת) באמצעות המודול im_cloudbuild_workspace:

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ 
       --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
       --git-source-repo=GIT_REPO \
       --git-source-directory=DIRECTORY \
       --git-source-ref=REF
    

    מחליפים את:

    • PROJECT_ID: מזהה הפרויקט שבו פועל Infrastructure Manager.
    • LOCATION: המיקום שבו פועל Infra Manager. מיקומי Infrastructure Manager
    • DEPLOYMENT_ID: מזהה הפריסה שאתם מציינים. פרטים על אילוצים לגבי מזהה הפריסה מופיעים במאמר בנושא שם הפריסה.
    • SERVICE_ACCOUNT: השם של חשבון השירות שמשמש לקריאה ל-Infra Manager.
    • SERVICE_ACCOUNT_PROJECT_ID הוא מזהה הפרויקט של חשבון השירות. בדרך כלל זה אותו פרויקט שבו פועל Infrastructure Manager.
    • GIT_REPO: מאגר Git ציבורי.
    • DIRECTORY: הספרייה שכוללת את ההגדרות של Terraform.
    • REF: ההפניה ל-Git של ההגדרה. ההפניה היא אופציונלית. אם לא מציינים את ההפניה, המערכת משתמשת בענף שמוגדר כברירת מחדל במאגר Git.
  5. כדי לוודא שמאגר ה-Git שלכם מחובר בצורה נכונה ל-Infra Manager, צריך ליצור בקשת משיכה במאגר.

    כדי לראות את תוצאות האימות של הגדרות Terraform שהועתקו, צופים בבקשת משיכה ב-GitHub.

עכשיו, אחרי שהגדרתם את האוטומציה הזו, הטריגרים של Cloud Build יגרמו לפעולות הבאות:

  • כששולחים בקשת משיכה למאגר, Infra Manager יוצר פריסת תצוגה מקדימה באמצעות הגדרות Terraform שהועתקו מהמאגר ב-Git.
  • כשממזגים בקשת משיכה למאגר, Infra Manager מעדכן את הפריסה באמצעות הגדרת Terraform שהועתקה ומאוחסנת במאגר Git.

המאמרים הבאים