بدء استخدام Terraform وFirebase

بدأت Firebase في إتاحة استخدام Terraform. في حال كنت ضمن فريق يريد إنشاء Firebase بشكل تلقائي وتوحيدي بها موارد محددة متوفرة وخدمات مُفعّلة، ثم تستخدم قد يكون تنسيق التضاريس باستخدام Firebase مناسبًا لك.

يتضمن سير العمل الأساسي لاستخدام Terraform مع Firebase ما يلي:

  • إنشاء وتخصيص ملف إعداد Terraform (ملف .tf) الذي البنية الأساسية التي تريد توفيرها (أي الموارد التي الخدمة التي تريد إعدادها والخدمات التي تريد تفعيلها).

  • استخدام أوامر gcloud CLI التي تتفاعل مع Terraform من أجل توفير البنية الأساسية المحددة في ملف .tf.

ما أهمية Terraform وFirebase؟

مثال لسير العمل المعمَّم في هذا الدليل إنشاء مشروع جديد على Firebase باستخدام تطبيق Android. لكن يمكنك القيام بالكثير باستخدام Terraform، مثل:

  • حذف البنية الأساسية الحالية وتعديلها باستخدام Terraform.

  • يمكنك إدارة التهيئة والمهام الخاصة بالمنتج باستخدام Terraform، مثل:

    • جارٍ تفعيل Firebase Authentication مقدّم خدمة تسجيل الدخول.
    • إنشاء Cloud Storage حزمة أو مثيلات قاعدة بيانات ونشرها Firebase Security Rules لهم.

يمكنك استخدام ملفات وأوامر تهيئة Terraform العادية لإنجاز كل هذه المهام. لمساعدتك في ذلك، قدّمنا عيّنات من ملفات إعدادات Terraform لعدة حالات استخدام شائعة.



سير عمل معمَّم لاستخدام Terraform مع Firebase

المتطلبات الأساسية

يمثل هذا الدليل مقدمة عن استخدام Terraform مع Firebase، لذلك يفترض الكفاءة الأساسية في استخدام Terraform. تأكَّد من إكمال ما يلي: المتطلبات الأساسية قبل بدء سير العمل هذا.

  • تثبيت Terraform وتعرّف على Terraform من خلال برامجهم التعليمية الرسمية.

  • تثبيت Google Cloud CLI (gcloud CLI). تسجيل الدخول باستخدام حساب المستخدم أو a حساب الخدمة.


الخطوة 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 = "~> 5.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
    }

    يمكنك الاطّلاع على مزيد من المعلومات عن سياسة أنواعًا مختلفة من السمات المتعلّقة بالمشروع (بما في ذلك ما يسميه هذا الدليل "مشروع التحقق من الحصة") عند استخدام تنسيق التضاريس باستخدام 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. للحصول على معلومات تفصيلية حول هذه الأوامر، يمكنك الاطّلاع على مستندات مكوّنة من تِراميات خارجية:

  1. إذا كانت هذه هي المرة الأولى التي تُشغِّل فيها أوامر Terraform في الدليل، فستحتاج إلى تهيئة دليل التهيئة وتثبيت موفِّر خدمة Google Terraform. يمكنك إجراء ذلك عن طريق تشغيل الأمر التالي:

    terraform init
  2. أنشئ البنية الأساسية المحددة في ملف main.tf من خلال تشغيل الأمر التالي:

    terraform apply
  3. تأكَّد من أنّه تمت إدارة حسابات جميع الخدمات أو تفعيلها على النحو المتوقّع:

    • الخيار 1: راجِع الإعدادات المطبوعة في الوحدة الطرفية من خلال تشغيل الأمر التالي:

      terraform show
    • الخيار الثاني: عرض مشروع Firebase في وحدة تحكُّم Firebase



موارد Firebase التي تتيح استخدام Terraform

تتوافق موارد Firebase وGoogle التالية مع Terraform. ونحن نعمل على إضافة المزيد من المراجع باستمرار. لذلك إذا لم يظهر لك المورد وترغب في إدارتها باستخدام Terraform، ثم أعد التحقق قريبًا لمعرفة ما إذا كان متاحًا أو طلبه عن طريق الإبلاغ عن مشكلة في مستودع GitHub


إدارة مشاريع وتطبيقات Firebase

  • google_firebase_project: تفعيل خدمات Firebase في مشروع Google Cloud حالي

  • تطبيقات Firebase


Firebase Authentication

  • google_identity_platform_config — تفعيل Google Cloud Identity Platform (GCIP) (وهو الواجهة الخلفية لـ Firebase Authentication) وتوفير إعدادات المصادقة على مستوى المشروع

    • يتطلب إعداد Firebase Authentication عبر Terraform تفعيل GCIP. الماركة فتأكد من مراجعة نموذج ملف .tf للتعرّف على طريقة إعداد "Firebase Authentication"

    • المشروع الذي ستفعّل فيه Terraform GCIP و/أو Firebase Authentication أن يكون ضمن خطة أسعار Blaze (أي أن المشروع يجب أن يكون له مرتبطًا بحساب Cloud Billing). يمكنك القيام بذلك آليًا عن طريق ضبط billing_account في مورد google_project.

    • يتيح هذا المورد أيضًا المزيد من الإعدادات، مثل طرق تسجيل الدخول المحلية مثل مصادقة الهوية المجهولة، والبريد الإلكتروني/كلمة المرور، ومصادقة الهاتف، وكذلك دوال الحظر والنطاقات المسموح بها.

  • google_identity_platform_default_supported_idp_config — إعداد موفِّري الهوية الموحدة الشائعين، مثل Google أو Facebook أو Apple

  • identity_platform_oauth_idp_config — ضبط مصادر عشوائية لموفِّري هوية OAuth (IdP)

  • google_identity_platform_inbound_saml_config — إعداد عمليات دمج SAML

الميزة غير متاحة بعد:

  • تكوين مصادقة متعددة العوامل (MFA) عبر Terraform

Firebase Realtime Database

غير متاحة بعد:

  • نشر Firebase Realtime Database Security Rules عبر Terraform (تعرَّف على كيفية نشر Rules هذه استخدام أدوات أخرى، بما في ذلك الخيارات الآلية)

Cloud Firestore

  • google_firestore_database: إنشاء مثيل Cloud Firestore

  • google_firestore_index: تفعيل طلبات بحث فعّالة لـ Cloud Firestore

  • google_firestore_document — إعداد مثيل Cloud Firestore من خلال مستند معيّن في مجموعة

    ملاحظة مهمة: لا تستخدم بيانات المستخدمين النهائيين أو بيانات الإنتاج في هذه القيمة الأساسية. جلسة المراجعة.


Cloud Storage for Firebase


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 لحالات الاستخدام الشائعة



تحديد المشاكل وحلّها والأسئلة الشائعة