התחל עם Terraform ו-Firebase

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

זרימת העבודה הבסיסית לשימוש ב- Terraform עם Firebase כוללת את הדברים הבאים:

  • יצירה והתאמה אישית של קובץ תצורה של Terraform (קובץ .tf ) המציין את התשתית שברצונך לספק (כלומר, משאבים שברצונך לספק והשירותים שברצונך להפעיל).

  • שימוש בפקודות gCloud CLI המתממשקות עם Terraform כדי לספק את התשתית המצוינת בקובץ .tf .

מה אתה יכול לעשות עם Terraform ו-Firebase?

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

  • מחק ושנה תשתית קיימת באמצעות Terraform.

  • נהל תצורה ומשימות ספציפיות למוצר באמצעות Terraform, כמו:

    • הפעלת ספקי כניסה של Firebase Authentication.
    • יצירת דליים של Cloud Storage או מופעי מסד נתונים ופריסה של כללי אבטחה של Firebase עבורם.

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



זרימת עבודה כללית לשימוש ב- Terraform עם Firebase

דרישות מוקדמות

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

  • התקן את Terraform והכר את Terraform באמצעות המדריכים הרשמיים שלהם.

  • התקן את Google Cloud CLI (gCloud CLI). התחבר באמצעות חשבון משתמש או חשבון שירות .


שלב 1: צור והתאם אישית קובץ תצורה של Terraform

קובץ תצורה של Terraform צריך שני חלקים עיקריים (אשר מתוארים בפירוט להלן):

הגדר את provider שלך

נדרשת הגדרת provider לא משנה באילו מוצרים או שירותים של Firebase מדובר.

  1. צור קובץ תצורה של Terraform (כמו קובץ main.tf ) בספרייה המקומית שלך.

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

  2. כלול את הגדרות provider הבאות בחלק העליון של קובץ main.tf

    עליך להשתמש בספק google-beta כי זוהי גרסת בטא של שימוש ב-Firebase עם Terraform. היזהר בעת השימוש בייצור.

    # Terraform configuration to set up providers by version.
    terraform {
      required_providers {
        google-beta = {
          source  = "hashicorp/google-beta"
          version = "~> 4.0"
        }
      }
    }
    
    # Configures the provider to use the resource block's specified project for quota checks.
    provider "google-beta" {
      user_project_override = true
    }
    
    # Configures the provider to not use the resource block's specified project for quota checks.
    # This provider should only be used during project creation and initializing services.
    provider "google-beta" {
      alias = "no_user_project_override"
      user_project_override = false
    }
    

    למידע נוסף על הסוגים השונים של תכונות הקשורות לפרויקט (כולל מה שמדריך זה מכנה "פרויקט בדיקת המכסה") בעת שימוש ב- Terraform עם Firebase.

  3. המשך לסעיף הבא כדי להשלים את קובץ התצורה שלך ולציין איזו תשתית ליצור.

ציין איזו תשתית ליצור באמצעות בלוקים resource

בקובץ התצורה של Terraform שלך (עבור מדריך זה, קובץ main.tf שלך), עליך לציין את כל התשתית שאתה רוצה ש- Terraform תיצור (כלומר את כל המשאבים שאתה רוצה לספק וכל השירותים שאתה רוצה להפעיל). במדריך זה, מצא רשימה מלאה של כל משאבי Firebase התומכים ב-Terraform .

  1. פתח את הקובץ main.tf שלך.

  2. תחת הגדרת provider , כלול את התצורה הבאה של בלוקים של resource .

    דוגמה בסיסית זו יוצרת פרויקט Firebase חדש ולאחר מכן יוצרת אפליקציית Firebase Android בתוך הפרויקט הזה.

    # Terraform configuration to set up providers by version.
    ...
    
    # Configures the provider to use the resource block's specified project for quota checks.
    ...
    
    # Configures the provider to not use the resource block's specified project for quota checks.
    ...
    
    # Creates a new Google Cloud project.
    resource "google_project" "default" {
      provider   = google-beta.no_user_project_override
    
      name       = "Project Display Name"
      project_id = "project-id-for-new-project"
      # Required for any service that requires the Blaze pricing plan
      # (like Firebase Authentication with GCIP)
      billing_account = "000000-000000-000000"
    
      # Required for the project to display in any list of Firebase projects.
      labels = {
        "firebase" = "enabled"
      }
    }
    
    # Enables required APIs.
    resource "google_project_service" "default" {
      provider = google-beta.no_user_project_override
      project  = google_project.default.project_id
      for_each = toset([
        "cloudbilling.googleapis.com",
        "cloudresourcemanager.googleapis.com",
        "firebase.googleapis.com",
        # Enabling the ServiceUsage API allows the new project to be quota checked from now on.
        "serviceusage.googleapis.com",
      ])
      service = each.key
    
      # Don't disable the service if the resource block is removed by accident.
      disable_on_destroy = false
    }
    
    # Enables Firebase services for the new project created above.
    resource "google_firebase_project" "default" {
      provider = google-beta
      project  = google_project.default.project_id
    
      # Waits for the required APIs to be enabled.
      depends_on = [
        google_project_service.default
      ]
    }
    
    # Creates a Firebase Android App in the new project created above.
    resource "google_firebase_android_app" "default" {
      provider = google-beta
    
      project      = google_project.default.project_id
      display_name = "My Awesome Android app"
      package_name = "awesome.package.name"
    
      # Wait for Firebase to be enabled in the Google Cloud project before creating this App.
      depends_on = [
        google_firebase_project.default,
      ]
    }
    


שלב 2: הפעל פקודות Terraform כדי ליצור את התשתית שצוינה

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

  1. אם זו הפעם הראשונה שאתה מפעיל פקודות Terraform בספרייה, עליך לאתחל את ספריית התצורה ולהתקין את ספק Google Terraform. עשה זאת על ידי הפעלת הפקודה הבאה:

    terraform init
  2. צור את התשתית שצוינה בקובץ main.tf שלך על ידי הפעלת הפקודה הבאה:

    terraform apply
  3. אשר שהכל הוקצה או הופעל כצפוי:

    • אפשרות 1: ראה את התצורה המודפסת בטרמינל שלך על ידי הפעלת הפקודה הבאה:

      terraform show
    • אפשרות 2: הצג את פרויקט Firebase שלך ​​במסוף Firebase .



משאבי Firebase עם תמיכת Terraform

למשאבי Firebase ו-Google הבאים יש תמיכה ב-Terraform. ואנחנו מוסיפים עוד משאבים כל הזמן! אז אם אינך רואה את המשאב שברצונך לנהל עם Terraform, בדוק שוב בקרוב כדי לראות אם הוא זמין או בקש זאת על ידי הגשת בעיה ב- GitHub repo .


ניהול פרויקטים ואפליקציות של Firebase

  • google_firebase_project — אפשר שירותי Firebase בפרויקט Google Cloud קיים

  • google_firebase_project_location - הגדר את המיקום עבור משאבי ברירת המחדל של Google Cloud של הפרויקט

  • אפליקציות Firebase


אימות Firebase

  • google_identity_platform_config - הפעל את Google Cloud Identity Platform (GCIP) (שהוא הקצה האחורי של אימות Firebase) וספק הגדרות אימות ברמת הפרויקט

    • הגדרת אימות Firebase באמצעות Terraform מחייבת הפעלת GCIP. הקפד לעיין בקובץ .tf לדוגמה כדי להגדיר את אימות Firebase .

    • הפרויקט שבו Terraform יאפשר GCIP ו/או Firebase Authentication חייב להיות בתוכנית התמחור של Blaze (כלומר, לפרויקט חייב להיות חשבון Cloud Billing משויך). אתה יכול לעשות זאת באופן פרוגרמטי על ידי הגדרת התכונה billing_account במשאב google_project .

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

  • google_identity_platform_default_supported_idp_config - הגדר ספקי זהות מאוחדים נפוצים, כמו גוגל, פייסבוק או אפל

  • identity_platform_oauth_idp_config - הגדר מקורות שרירותיים של OAuth Identity Provider (IdP)

  • google_identity_platform_inbound_saml_config — הגדר שילובי SAML

עדיין לא נתמך:

  • הגדרת אימות רב-גורמי (MFA) באמצעות Terraform

מסד נתונים בזמן אמת של Firebase

עדיין לא נתמך:

  • פריסת כללי אבטחת מסד נתונים של Firebase בזמן אמת באמצעות Terraform (למד כיצד לפרוס כללים אלה באמצעות כלים אחרים, כולל אפשרויות פרוגרמטיות)

Cloud Firestore

  • google_firestore_database - צור מופע Cloud Firestore

  • google_firestore_index — אפשר שאילתות יעילות עבור Cloud Firestore

  • google_firestore_document - ראה מופע של Cloud Firestore עם מסמך ספציפי באוסף

    חשוב: אל תשתמש בנתוני משתמש קצה או ייצור אמיתיים במסמך המקור הזה.


אחסון בענן עבור Firebase


כללי אבטחה של Firebase (עבור Cloud Firestore ו-Cloud Storage)

שים לב ש-Firebase Realtime Database משתמש במערכת הקצאה אחרת עבור כללי האבטחה של Firebase.

  • google_firebaserules_ruleset - הגדר כללי אבטחה של Firebase החלים על מופע Cloud Firestore או דלי Cloud Storage

  • google_firebaserules_release - פרוס ערכות כללים ספציפיות למופע של Cloud Firestore או לדלי של Cloud Storage


בדיקת אפליקציית Firebase


הרחבות Firebase



דגימת קובצי תצורה של Terraform למקרי שימוש נפוצים



פתרון בעיות ושאלות נפוצות