Terraform ve Firebase'i kullanmaya başlayın

Firebase, Terraform'u desteklemeye başlıyor. Belirli kaynaklar sağlanmış ve hizmetler etkinleştirilmiş Firebase projeleri oluşturmayı otomatikleştirmek ve standartlaştırmak isteyen bir ekipteyseniz Firebase ile Terraform'u kullanmak sizin için iyi bir seçenek olabilir.

Terraform'u Firebase ile kullanmayla ilgili temel iş akışı aşağıdakileri içerir:

  • Hazırlamak istediğiniz altyapıyı (yani, sağlamak istediğiniz kaynakları ve etkinleştirmek istediğiniz hizmetleri) belirten bir Terraform yapılandırma dosyası (.tf dosyası) oluşturup özelleştirme

  • .tf dosyasında belirtilen altyapıyı sağlamak için Terraform ile arayüz oluşturan gcloud CLI komutlarını kullanma

Terraform ve Firebase ile neler yapabilirsiniz?

Bu kılavuzdaki genel iş akışı örneği, bir Android uygulamasıyla yeni bir Firebase projesi oluşturmaktır. Terraform ile aşağıdaki gibi çok daha fazlasını yapabilirsiniz:

  • Terraform'u kullanarak mevcut altyapıyı silin ve değiştirin.

  • Terraform'u kullanarak ürüne özel yapılandırmaları ve görevleri yönetin. Örneğin:

    • Firebase Authentication oturum açma sağlayıcılarını etkinleştirme
    • Cloud Storage paket veya veritabanı örneği oluşturma ve bunlar için Firebase Security Rules dağıtma

Tüm bu görevleri tamamlamak için standart Terraform yapılandırma dosyalarını ve komutlarını kullanabilirsiniz. Bu konuda size yardımcı olmak için yaygın olarak kullanılan birkaç kullanım alanı için örnek Terraform yapılandırma dosyaları sağladık.



Terraform'u Firebase ile birlikte kullanmaya yönelik genel iş akışı

Ön koşullar

Bu kılavuz, Terraform'u Firebase ile kullanmaya yönelik bir giriş niteliğinde olduğundan Terraform hakkında temel düzeyde bilgi sahibi olduğunuzu varsaymaktadır. Bu iş akışını başlatmadan önce aşağıdaki ön koşulları tamamladığınızdan emin olun.

  • Terraform'u yükleyin ve resmi eğitimlerinden yararlanarak Terraform hakkında bilgi edinin.

  • Google Cloud CLI'ı (gcloud CLI) yükleyin. Kullanıcı hesabı veya hizmet hesabı kullanarak giriş yapın.


1. Adım: Terraform yapılandırma dosyası oluşturun ve özelleştirin

Terraform yapılandırma dosyalarında iki ana bölüm bulunur (aşağıda ayrıntılı olarak açıklanmıştır):

provider cihazınızı ayarlama

Hangi Firebase ürün veya hizmetlerinden bahsedildiğine bakılmaksızın provider kurulumu gerekir.

  1. Yerel dizininizde bir Terraform yapılandırma dosyası (main.tf dosyası gibi) oluşturun.

    Bu kılavuzda, bu yapılandırma dosyasını hem provider kurulumunu hem de Terraform'un oluşturmasını istediğiniz tüm altyapıyı belirtmek için kullanacaksınız. Ancak sağlayıcı ayarını nasıl dahil edeceğiniz konusunda seçenekleriniz olduğunu unutmayın.

  2. main.tf dosyasının üst kısmına aşağıdaki provider kurulumunu ekleyin.

    Bu, Terraform ile Firebase'i kullanmanın beta sürümü olduğu için google-beta sağlayıcısını kullanmanız gerekir. Üretimde kullanırken dikkatli olun.

    # 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 ile Terraform'u kullanırken projeyle ilgili farklı özellik türleri (bu kılavuzda "kota kontrolü projesi" olarak adlandırılan özellik dahil) hakkında daha fazla bilgi edinin.

  3. Yapılandırma dosyanızı tamamlamak ve hangi altyapıyı oluşturacağınızı belirtmek için sonraki bölüme geçin.

resource bloklarını kullanarak hangi altyapının oluşturulacağını belirtme

Terraform yapılandırma dosyanızda (bu kılavuz için, main.tf dosyanız), Terraform'un oluşturmasını istediğiniz tüm altyapıyı (yani sağlamak istediğiniz tüm kaynakları ve etkinleştirmek istediğiniz tüm hizmetleri) belirtmeniz gerekir. Bu kılavuzda, Terraform'u destekleyen tüm Firebase kaynaklarının tam listesini bulabilirsiniz.

  1. main.tf dosyanızı açın.

  2. provider kurulumunun altına aşağıdaki resource blok yapılandırmasını ekleyin.

    Bu temel örnek, yeni bir Firebase projesinin yanı sıra bu proje içinde de bir Firebase Android uygulaması oluşturuyor.

    # 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. adım: Belirtilen altyapıyı oluşturmak için Terraform komutlarını çalıştırın

Kaynakların temel hazırlığını yapmak ve main.tf dosyanızda belirtilen hizmetleri etkinleştirmek için main.tf dosyanızla aynı dizinde aşağıdaki komutları çalıştırın. Bu komutlar hakkında ayrıntılı bilgi için Terraform dokümanlarına bakın.

  1. Dizinde Terraform komutlarını ilk kez çalıştırıyorsanız yapılandırma dizinini başlatmanız ve Google Terraform sağlayıcısını yüklemeniz gerekir. Bunun için aşağıdaki komutu çalıştırın:

    terraform init
  2. Aşağıdaki komutu çalıştırarak main.tf dosyanızda belirtilen altyapıyı oluşturun:

    terraform apply
  3. Her şeyin beklendiği gibi temel hazırlığının yapıldığını veya etkinleştirildiğini onaylayın:

    • 1. Seçenek: Aşağıdaki komutu çalıştırarak yapılandırmayı terminalinizde yazdırın:

      terraform show
    • 2. seçenek: Firebase projenizi Firebase konsolunda görüntüleyin.



Terraform desteğine sahip Firebase kaynakları

Aşağıdaki Firebase ve Google kaynakları Terraform desteğine sahiptir. Ayrıca sürekli yeni kaynaklar eklemeye devam ediyoruz. Bu nedenle, Terraform ile yönetmek istediğiniz kaynağı görmüyorsanız kullanılabilir olup olmadığını öğrenmek için kısa süre sonra tekrar kontrol edin veya GitHub deposunda sorun kaydı açarak kaynağı isteyin.


Firebase projesi ve uygulama yönetimi

  • google_firebase_project — Mevcut bir Google Cloud projesinde Firebase hizmetlerini etkinleştirir

  • Firebase uygulamaları


Firebase Authentication

Henüz desteklenmeyenler:

  • Terraform aracılığıyla çok faktörlü kimlik doğrulamayı (MFA) yapılandırma

Firebase Realtime Database

Henüz desteklenmeyenler:


Cloud Firestore

  • google_firestore_database: Cloud Firestore örneği oluşturun

  • google_firestore_index: Cloud Firestore için verimli sorgular etkinleştirilir.

  • google_firestore_document — Koleksiyonda belirli bir dokümanla bir Cloud Firestore örneği alır

    Önemli: Bu kaynak dokümanda gerçek son kullanıcı veya üretim verileri kullanmayın.


Cloud Storage for Firebase

  • google_firebase_storage_bucket: Mevcut bir Cloud Storage paketini Firebase SDK'ları, kimlik doğrulama ve Firebase Security Rules için erişilebilir hale getirin.

  • google_storage_bucket_object: Cloud Storage paketine nesne ekleme

    Önemli: Bu dosyada gerçek son kullanıcı veya üretim verileri kullanmayın.


Firebase Security Rules (Cloud Firestore ve Cloud Storage için)

Firebase Realtime Database'ün Firebase Security Rules için farklı bir temel hazırlama sistemi kullandığını unutmayın.

  • google_firebaserules_ruleset: Cloud Firestore örneği veya Cloud Storage paketi için geçerli Firebase Security Rules'i tanımlar

  • google_firebaserules_release: Belirli kural kümelerini bir Cloud Firestore örneğine veya Cloud Storage paketine dağıtma


Firebase App Check


Firebase Extensions



Yaygın kullanım alanları için örnek Terraform yapılandırma dosyaları



Sorun giderme ve SSS