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

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

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

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

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

ماذا يمكنك أن تفعل مع Terraform وFirebase؟

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

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

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

    • تمكين موفري تسجيل الدخول لمصادقة Firebase.
    • إنشاء مجموعات التخزين السحابي أو مثيلات قاعدة البيانات ونشر قواعد أمان 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

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

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

    • يجب أن يكون المشروع الذي ستقوم فيه Terraform بتمكين GCIP و/أو مصادقة Firebase مدرجًا في خطة تسعير Blaze (أي، يجب أن يكون للمشروع حساب فوترة سحابية مرتبط). يمكنك إجراء ذلك برمجيًا عن طريق تعيين سمة 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 في الوقت الحقيقي

غير مدعوم بعد:

  • نشر قواعد أمان قاعدة بيانات Firebase Realtime عبر Terraform (تعرف على كيفية نشر هذه القواعد باستخدام أدوات أخرى، بما في ذلك الخيارات البرمجية)

سحابة فايرستور

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

  • google_firestore_index — تمكين الاستعلامات الفعالة لـ Cloud Firestore

  • google_firestore_document — قم بتجميع مثيل Cloud Firestore مع مستند محدد في مجموعة

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


التخزين السحابي لـ Firebase


قواعد أمان Firebase (لـ Cloud Firestore وCloud Storage)

لاحظ أن قاعدة بيانات Firebase Realtime تستخدم نظام توفير مختلفًا لقواعد أمان Firebase الخاصة بها.

  • google_firebaserules_ruleset - تحديد قواعد أمان Firebase التي تنطبق على مثيل Cloud Firestore أو مجموعة Cloud Storage

  • google_firebaserules_release — نشر مجموعات قواعد محددة على مثيل Cloud Firestore أو مجموعة Cloud Storage


ملحقات Firebase



نموذج لملفات تكوين Terraform لحالات الاستخدام الشائعة



استكشاف الأخطاء وإصلاحها والأسئلة الشائعة