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

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

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

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

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

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

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

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

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

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

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



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

پیش‌نیازها

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

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

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


مرحله ۱: ایجاد و سفارشی‌سازی یک فایل پیکربندی 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 = "~> 6.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 را درون آن پروژه ایجاد می‌کند.

    # 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,
      ]
    }


مرحله ۲: اجرای دستورات Terraform برای ایجاد زیرساخت مشخص شده

برای تأمین منابع و فعال کردن سرویس‌های مشخص شده در فایل main.tf خود، دستورات زیر را از همان دایرکتوری فایل main.tf خود اجرا کنید. برای اطلاعات دقیق در مورد این دستورات، به مستندات Terraform مراجعه کنید.

  1. اگر این اولین بار است که دستورات Terraform را در دایرکتوری اجرا می‌کنید، باید دایرکتوری پیکربندی را مقداردهی اولیه کرده و ارائه‌دهنده Google Terraform را نصب کنید. این کار را با اجرای دستور زیر انجام دهید:

    terraform init
  2. با اجرای دستور زیر، زیرساخت مشخص شده در فایل main.tf خود را ایجاد کنید:

    terraform apply
  3. تأیید کنید که همه چیز طبق انتظار ارائه یا فعال شده است:

    • گزینه ۱: با اجرای دستور زیر، پیکربندی چاپ شده در ترمینال خود را مشاهده کنید:

      terraform show
    • گزینه ۲: پروژه Firebase خود را در کنسول Firebase مشاهده کنید.



منابع فایربیس با پشتیبانی از Terraform

منابع فایربیس و گوگل زیر از Terraform پشتیبانی می‌کنند. و ما دائماً در حال اضافه کردن منابع بیشتر هستیم! بنابراین اگر منبعی را که می‌خواهید با Terraform مدیریت کنید، نمی‌بینید، در اسرع وقت دوباره بررسی کنید تا ببینید آیا در دسترس است یا خیر، یا با ثبت مشکل در مخزن گیت‌هاب، درخواست آن را بدهید.


مدیریت پروژه و برنامه فایربیس

  • google_firebase_project — سرویس‌های Firebase را روی یک پروژه Google Cloud موجود فعال می‌کند

  • اپلیکیشن‌های فایربیس


Firebase Authentication

  • google_identity_platform_config — فعال کردن Google Cloud Identity Platform (GCIP) (که بک‌اند Firebase Authentication است) و ارائه تنظیمات احراز هویت در سطح پروژه

    • پیکربندی Firebase Authentication از طریق Terraform نیاز به فعال کردن GCIP دارد. برای نحوه تنظیم Firebase Authentication حتماً فایل .tf نمونه را بررسی کنید.

    • پروژه‌ای که Terraform در آن GCIP و/یا Firebase Authentication فعال می‌کند، باید در طرح قیمت‌گذاری Blaze باشد (یعنی، پروژه باید یک حساب Cloud Billing مرتبط داشته باشد). می‌توانید این کار را به صورت برنامه‌نویسی با تنظیم ویژگی billing_account در منبع google_project انجام دهید.

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

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

  • identity_platform_oauth_idp_config — منابع ارائه دهنده هویت OAuth (IdP) دلخواه را پیکربندی می‌کند

  • google_identity_platform_inbound_saml_config — پیکربندی ادغام‌های SAML

هنوز پشتیبانی نمی‌شود:

  • پیکربندی احراز هویت چند عاملی (MFA) از طریق Terraform

Firebase App Hosting


Firebase Data Connect


Firebase Realtime Database

هنوز پشتیبانی نمی‌شود:


Cloud Firestore

  • google_firestore_database — یک نمونه از Cloud Firestore ایجاد کنید

  • google_firestore_index — فعال کردن کوئری‌های کارآمد برای Cloud Firestore

  • google_firestore_document - یک نمونه Cloud Firestore را با یک سند خاص در یک مجموعه، Seed می‌کند.

    مهم: از داده‌های واقعی کاربر نهایی یا داده‌های مربوط به محصول در این سند اولیه استفاده نکنید.


Cloud Storage for Firebase

  • google_firebase_storage_bucket - یک مخزن Cloud Storage موجود را برای SDKهای فایربیس، احراز هویت و Firebase Security Rules قابل دسترس می‌کند

  • google_storage_bucket_object — یک شیء را به سطل Cloud Storage اضافه می‌کند

    مهم: از داده‌های واقعی کاربر نهایی یا داده‌های مربوط به محصول در این فایل استفاده نکنید.


Firebase Security Rules (برای Cloud Firestore و Cloud Storage )

توجه داشته باشید که Firebase Realtime Database از سیستم تأمین متفاوتی برای Firebase Security Rules خود استفاده می‌کند.

  • google_firebaserules_ruleset - Firebase Security Rules که برای یک نمونه Cloud Firestore یا یک سطل Cloud Storage اعمال می‌شود، تعریف می‌کند.

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


Firebase App Check


Firebase Extensions



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



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