با Terraform و Firebase شروع کنید

Firebase شروع به پشتیبانی از Terraform کرده است. اگر در تیمی هستید که می‌خواهد ایجاد پروژه‌های Firebase را با منابع خاص و فعال‌سازی خدمات به‌طور خودکار و استاندارد کند، استفاده از Terraform با Firebase می‌تواند برای شما مناسب باشد.

گردش کار اصلی برای استفاده از Terraform با Firebase شامل موارد زیر است:

  • ایجاد و سفارشی کردن یک فایل پیکربندی Terraform (یک فایل .tf ) که زیرساختی را که می خواهید تهیه کنید (یعنی منابعی که می خواهید تهیه کنید و خدماتی که می خواهید فعال کنید) را مشخص می کند.

  • با استفاده از دستورات gCloud CLI که با Terraform ارتباط برقرار می کند تا زیرساخت مشخص شده در فایل .tf را فراهم کند.

با Terraform و Firebase چه کاری می توانید انجام دهید؟

نمونه گردش کار تعمیم یافته در این راهنما ایجاد یک پروژه Firebase جدید با یک برنامه Android است. اما شما می توانید کارهای بیشتری را با Terraform انجام دهید، مانند:

  • زیرساخت های موجود را با استفاده از Terraform حذف و اصلاح کنید.

  • پیکربندی و وظایف خاص محصول را با استفاده از Terraform مدیریت کنید، مانند:

    • فعال کردن ارائه دهندگان ورود به سیستم Firebase Authentication.
    • ایجاد سطل های Cloud Storage یا نمونه های پایگاه داده و استقرار قوانین امنیتی Firebase برای آنها.

می‌توانید از فایل‌ها و دستورات پیکربندی استاندارد Terraform برای انجام تمام این وظایف استفاده کنید. و برای کمک به شما در این زمینه، نمونه فایل‌های پیکربندی Terraform را برای چندین مورد معمول ارائه کرده‌ایم.



گردش کار تعمیم یافته برای استفاده از Terraform با Firebase

پیش نیازها

این راهنما مقدمه ای برای استفاده از Terraform با Firebase است، بنابراین مهارت اولیه با Terraform را فرض می کند. مطمئن شوید که پیش نیازهای زیر را قبل از شروع این گردش کار تکمیل کرده اید.

  • Terraform را نصب کنید و با استفاده از آموزش های رسمی Terraform با Terraform آشنا شوید.

  • Google Cloud CLI (gCloud CLI) را نصب کنید . با استفاده از یک حساب کاربری یا یک حساب سرویس وارد شوید.


مرحله 1: یک فایل پیکربندی Terraform را ایجاد و سفارشی کنید

یک فایل پیکربندی Terraform به دو بخش اصلی نیاز دارد (که در زیر به تفصیل توضیح داده شده است):

provider خود را تنظیم کنید

بدون توجه به اینکه کدام محصولات یا خدمات Firebase درگیر هستند، راه اندازی provider مورد نیاز است.

  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 جدید ایجاد می کند و سپس یک برنامه Android Firebase را در آن پروژه ایجاد می کند.

    # 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 آن را درخواست کنید.


مدیریت پروژه و برنامه 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 را فعال می‌کند باید در طرح قیمت‌گذاری Blaze باشد (یعنی پروژه باید یک حساب Cloud Billing مرتبط داشته باشد). می توانید این کار را به صورت برنامه نویسی با تنظیم ویژگی billing_account در منبع google_project انجام دهید.

    • این منبع همچنین پیکربندی‌های بیشتری را فعال می‌کند، مانند روش‌های ورود به سیستم محلی، مانند تأیید هویت ناشناس، ایمیل/رمز عبور، و احراز هویت تلفن، و همچنین مسدود کردن توابع و دامنه‌های مجاز.

  • google_identity_platform_default_supported_idp_config — پیکربندی ارائه دهندگان هویت مشترک فدرال، مانند Google، Facebook، یا Apple

  • 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 از یک سیستم تامین متفاوت برای قوانین امنیتی Firebase خود استفاده می کند.

  • google_firebaserules_ruleset — قوانین امنیتی Firebase را تعریف کنید که برای نمونه Cloud Firestore یا یک سطل Cloud Storage اعمال می شود.

  • google_firebaserules_release - استقرار قوانین خاصی در نمونه Cloud Firestore یا یک سطل Cloud Storage


بررسی برنامه Firebase


افزونه های Firebase



نمونه فایل های پیکربندی Terraform برای موارد استفاده رایج



عیب یابی و سوالات متداول