Terraform ve Firebase'i kullanmaya başlayın

Firebase, Terraform'u desteklemeye başlıyor. Belirli kaynakların sağlandığı ve hizmetlerin etkinleştirildiği Firebase projeleri oluşturma sürecini otomatikleştirmek ve standartlaştırmak isteyen bir ekipteyseniz Firebase ile Terraform'u kullanmak sizin için uygun olabilir.

Firebase ile Terraform kullanmanın temel iş akışı şunları içerir:

  • Sağlamak 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şturma ve özelleştirme.

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

Terraform ve Firebase ile neler yapabilirsiniz?

Bu kılavuzdaki örnek genelleştirilmiş iş akışında Android uygulaması içeren yeni bir Firebase projesi oluşturuluyor. Ancak Terraform ile çok daha fazlasını yapabilirsiniz. Örneğin:

  • Terraform'u kullanarak mevcut altyapıyı silme ve değiştirme

  • Terraform'u kullanarak ürüne özel yapılandırmayı ve görevleri yönetme (ör. aşağıdakiler):

    • Firebase Authentication oturum açma hizmet sağlayıcıları etkinleştiriliyor.
    • Cloud Storage paketleri veya veritabanı örnekleri oluşturma ve bunlar için Firebase Security Rules dağıtma.
    • Firebase App Hosting arka uçları, derlemeler ve diğer ilgili kaynakları oluşturma

Tüm bu görevleri gerçekleştirmek için standart Terraform yapılandırma dosyalarını ve komutlarını kullanabilirsiniz. Bu konuda size yardımcı olmak için çeşitli yaygın kullanım alanlarına yönelik örnek Terraform yapılandırma dosyaları sağladık.



Terraform'u Firebase ile kullanmaya yönelik genelleştirilmiş iş akışı

Ön koşullar

Bu kılavuz, Terraform'u Firebase ile kullanmaya yönelik bir giriş niteliğindedir. Bu nedenle, Terraform'da temel düzeyde yeterlilik sahibi olduğunuz varsayılı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ğitimlerini kullanarak Terraform hakkında bilgi edinin.

  • Google Cloud CLI (gcloud CLI) uygulamasını 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

Bir Terraform yapılandırma dosyasının iki ana bölümü olması gerekir (Ayrıntılı açıklamalar aşağıda verilmiştir):

provider cihazınızı ayarlama

Hangi Firebase ürünleri veya hizmetleri kullanılıyor olursa olsun provider kurulumu gerekir.

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

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

  2. provider kurulumunu main.tf dosyasının en üstüne ekleyin.

    Firebase'i Terraform ile kullanmanın beta sürümü olduğundan 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 = "~> 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
    }

    Firebase ile Terraform'u kullanırken farklı proje özellik türleri (bu kılavuzun "kota kontrolü projesi" olarak adlandırdığı proje dahil) hakkında daha fazla bilgi edinin.

  3. Yapılandırma dosyanızı tamamlamak ve hangi altyapının oluşturulacağını belirtmek için bir 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 kurulumu altında, resource bloklarının aşağıdaki yapılandırmasını ekleyin.

    Bu temel örnekte yeni bir Firebase projesi oluşturulur ve ardından bu proje içinde bir Firebase Android uygulaması oluşturulur.

    # 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ı sağlama ve main.tf dosyanızda belirtilen hizmetleri etkinleştirme için main.tf dosyanızla aynı dizinden aşağıdaki komutları çalıştırın. Bu komutlar hakkında ayrıntılı bilgi için Terraform belgelerine bakın.

  1. Dizinde ilk kez Terraform komutları ç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 sağlandığını veya etkinleştirildiğini onaylayın:

    • 1. seçenek: Aşağıdaki komutu çalıştırarak yapılandırmayı terminalinizde yazdırılmış olarak görün:

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



Terraform desteği olan Firebase kaynakları

Aşağıdaki Firebase ve Google kaynakları Terraform'u destekler. Ayrıca, kaynaklarımıza yenilerini eklemeye devam ediyoruz. Bu nedenle, Terraform ile yönetmek istediğiniz kaynağı görmüyorsanız kısa süre sonra tekrar kontrol ederek kullanılabilir olup olmadığını öğrenebilir veya GitHub deposunda sorun kaydı açarak isteyebilirsiniz.


Firebase projesi ve uygulama yönetimi

  • google_firebase_project: Mevcut bir Google Cloud projesinde Firebase hizmetlerini etkinleştirme

  • Firebase uygulamaları


Firebase Authentication

Henüz desteklenmeyenler:

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

Firebase App Hosting


Firebase Data Connect


Firebase Realtime Database

Henüz desteklenmeyenler:

  • Terraform ile Firebase Realtime Database Security Rules dağıtma (programatik seçenekler de dahil olmak üzere diğer araçları kullanarak bu Rules nasıl dağıtacağınızı öğrenin)

Cloud Firestore

  • google_firestore_databaseCloud Firestore örneği oluşturma

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

  • google_firestore_documentCloud Firestore örneğini bir koleksiyondaki belirli bir dokümanla başlatma

    Önemli: Bu başlangıç belgesinde gerçek son kullanıcı veya üretim verilerini kullanmayın.


Cloud Storage for Firebase

  • google_firebase_storage_bucket — mevcut bir Cloud Storage grubu, Firebase SDK'ları, kimlik doğrulama ve Firebase Security Rules için erişilebilir hale getirme

  • google_storage_bucket_objectCloud Storage paketine nesne ekleme

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


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

Firebase Realtime Database'nın Firebase Security Rules için farklı bir sağlama sistemi kullandığını unutmayın.

  • google_firebaserules_ruleset: Cloud Firestore örneğine veya Cloud Storage grubuna uygulanan Firebase Security Rules tanımlayın

  • google_firebaserules_releaseCloud Firestore örneğine veya Cloud Storage paketine belirli kural kümeleri dağıtma


Firebase App Check


Firebase Extensions



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



Sorun giderme ve SSS