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

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

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

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

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

ما أهمية Terraform وFirebase؟

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

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

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

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

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



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

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

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

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

  • تثبيت واجهة سطر الأوامر في Google Cloud (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 = "~> 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
    }
    

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

  • 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_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 في الوقت الفعلي عبر 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 لحالات الاستخدام الشائعة



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