Erste Schritte mit Terraform und Firebase

Firebase bietet jetzt Unterstützung für Terraform. Wenn Sie in einem Team arbeiten, das die Erstellung von Firebase-Projekten mit bestimmten bereitgestellten Ressourcen und aktivierten Diensten automatisieren und standardisieren möchte, ist die Verwendung von Terraform mit Firebase möglicherweise das Richtige für Sie.

Der grundlegende Workflow für die Verwendung von Terraform mit Firebase umfasst Folgendes:

  • Erstellen und Anpassen einer Terraform-Konfigurationsdatei (einer .tf-Datei), in der die Infrastruktur angegeben wird, die Sie bereitstellen möchten (d. h. Ressourcen, die Sie bereitstellen möchten, und Dienste, die Sie aktivieren möchten).

  • gcloud CLI-Befehle verwenden, die mit Terraform interagieren, um die in der Datei .tf angegebene Infrastruktur bereitzustellen.

Was kann ich mit Terraform und Firebase tun?

Im allgemeinen Beispiel-Workflow in diesem Leitfaden wird ein neues Firebase-Projekt mit einer Android-App erstellt. Mit Terraform können Sie aber noch viel mehr tun, z. B.:

  • Vorhandene Infrastruktur mit Terraform löschen und ändern.

  • Mit Terraform können Sie produktspezifische Konfigurationen und Aufgaben verwalten, z. B.:

    • Firebase Authentication-Anbieter für Anmeldungen aktivieren
    • Cloud Storage-Buckets oder Datenbankinstanzen erstellen und Firebase Security Rules für sie bereitstellen.
    • Firebase App Hosting-Back-Ends, Builds und andere zugehörige Ressourcen erstellen.

Sie können für alle diese Aufgaben Standard-Terraform-Konfigurationsdateien und -Befehle verwenden. Dazu haben wir Terraform-Konfigurationsdateien für mehrere häufige Anwendungsfälle bereitgestellt.



Allgemeiner Workflow für die Verwendung von Terraform mit Firebase

Voraussetzungen

Dieser Leitfaden ist eine Einführung in die Verwendung von Terraform mit Firebase. Es wird daher davon ausgegangen, dass Sie grundlegende Kenntnisse in Terraform haben. Achten Sie darauf, dass Sie die folgenden Voraussetzungen erfüllen, bevor Sie mit diesem Workflow beginnen.

  • Installieren Sie Terraform und machen Sie sich anhand der offiziellen Tutorials mit Terraform vertraut.

  • Installieren Sie Google Cloud CLI (gcloud CLI). Melden Sie sich mit einem Nutzerkonto oder einem Dienstkonto an.


Schritt 1:Terraform-Konfigurationsdatei erstellen und anpassen

Eine Terraform-Konfigurationsdatei benötigt zwei Hauptabschnitte, die unten ausführlich beschrieben werden:

provider einrichten

Eine provider-Einrichtung ist unabhängig davon erforderlich, welche Firebase-Produkte oder ‑Dienste beteiligt sind.

  1. Erstellen Sie in Ihrem lokalen Verzeichnis eine Terraform-Konfigurationsdatei (z. B. main.tf).

    In dieser Anleitung verwenden Sie diese Konfigurationsdatei, um sowohl die provider-Einrichtung als auch die gesamte Infrastruktur anzugeben, die Terraform erstellen soll. Sie haben jedoch verschiedene Möglichkeiten, die Einrichtung des Anbieters einzubinden.

  2. Fügen Sie oben in der Datei main.tf die folgende provider-Einrichtung ein.

    Sie müssen den google-beta-Anbieter verwenden, da dies ein Betarelease der Verwendung von Firebase mit Terraform ist. Seien Sie vorsichtig, wenn Sie sie in der Produktion verwenden.

    # 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
    }

    Weitere Informationen zu den verschiedenen Arten von projektbezogenen Attributen (einschließlich des Projekts, das in dieser Anleitung als „Projekt für die Kontingentprüfung“ bezeichnet wird) bei der Verwendung von Terraform mit Firebase

  3. Fahren Sie mit dem nächsten Abschnitt fort, um die Konfigurationsdatei fertigzustellen und anzugeben, welche Infrastruktur erstellt werden soll.

Mit resource-Blöcken festlegen, welche Infrastruktur erstellt werden soll

In Ihrer Terraform-Konfigurationsdatei (in dieser Anleitung die Datei main.tf) müssen Sie die gesamte Infrastruktur angeben, die Terraform erstellen soll. Das bedeutet, dass Sie alle Ressourcen, die Sie bereitstellen möchten, und alle Dienste, die Sie aktivieren möchten, angeben müssen. Hier finden Sie eine vollständige Liste aller Firebase-Ressourcen, die Terraform unterstützen.

  1. Öffnen Sie Ihre main.tf-Datei.

  2. Fügen Sie unter der Einrichtung von provider die folgende Konfiguration von resource-Blöcken ein.

    In diesem einfachen Beispiel wird ein neues Firebase-Projekt und dann eine Firebase Android-App in diesem Projekt erstellt.

    # 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,
      ]
    }


Schritt 2:Terraform-Befehle ausführen, um die angegebene Infrastruktur zu erstellen

Führen Sie die folgenden Befehle im selben Verzeichnis wie Ihre main.tf-Datei aus, um die in der Datei main.tf angegebenen Ressourcen bereitzustellen und die Dienste zu aktivieren. Ausführliche Informationen zu diesen Befehlen finden Sie in der Terraform-Dokumentation.

  1. Wenn Sie zum ersten Mal Terraform-Befehle im Verzeichnis ausführen, müssen Sie das Konfigurationsverzeichnis initialisieren und den Google Terraform-Anbieter installieren. Führen Sie dazu den folgenden Befehl aus:

    terraform init
  2. Erstellen Sie die in der Datei main.tf angegebene Infrastruktur, indem Sie den folgenden Befehl ausführen:

    terraform apply
  3. Prüfen Sie, ob alles wie erwartet bereitgestellt oder aktiviert wurde:

    • Option 1:Führen Sie den folgenden Befehl aus, um die Konfiguration in Ihrem Terminal ausgeben zu lassen:

      terraform show
    • Option 2:Firebase-Projekt in der Firebase-Konsole ansehen



Firebase-Ressourcen mit Terraform-Unterstützung

Die folgenden Firebase- und Google-Ressourcen werden von Terraform unterstützt. Wir fügen ständig weitere Ressourcen hinzu. Wenn Sie die Ressource, die Sie mit Terraform verwalten möchten, nicht sehen, schauen Sie bald wieder nach, ob sie verfügbar ist, oder erstellen Sie eine Anfrage im GitHub-Repository.


Firebase-Projekte und ‑Apps verwalten

  • google_firebase_project: Firebase-Dienste in einem vorhandenen Google Cloud-Projekt aktivieren

  • Firebase-Apps


Firebase Authentication

  • google_identity_platform_config: Aktivieren Sie Google Cloud Identity Platform (GCIP), das Backend für Firebase Authentication, und geben Sie Authentifizierungseinstellungen auf Projektebene an.

    • Wenn Sie Firebase Authentication über Terraform konfigurieren möchten, müssen Sie GCIP aktivieren. Sehen Sie sich die .tf-Beispieldatei an, um zu erfahren, wie Sie Firebase Authentication einrichten.

    • Für das Projekt, in dem Terraform GCIP und/oder Firebase Authentication aktiviert, muss der Blaze-Tarif gelten. Das Projekt muss also mit einem Cloud Billing-Konto verknüpft sein. Sie können dies programmatisch tun, indem Sie das Attribut billing_account in der google_project-Ressource festlegen.

    • Diese Ressource ermöglicht auch weitere Konfigurationen, z. B. lokale Anmeldemethoden wie anonyme, E-Mail-/Passwort- und Telefonauthentifizierung sowie Blockierfunktionen und autorisierte Domains.

  • google_identity_platform_default_supported_idp_config: Konfigurieren Sie gängige föderierte Identitätsanbieter wie Google, Facebook oder Apple.

  • identity_platform_oauth_idp_config: Beliebige OAuth-Identitätsanbieterquellen (IdP) konfigurieren

  • google_identity_platform_inbound_saml_config – SAML-Integrationen konfigurieren

Noch nicht unterstützt:

  • Multi-Faktor-Authentifizierung (MFA) über Terraform konfigurieren

Firebase App Hosting


Firebase Data Connect


Firebase Realtime Database

Noch nicht unterstützt:


Cloud Firestore

  • google_firestore_database – Cloud Firestore-Instanz erstellen

  • google_firestore_index: Ermöglicht effiziente Abfragen für Cloud Firestore

  • google_firestore_document: Eine Cloud Firestore-Instanz mit einem bestimmten Dokument in einer Sammlung initialisieren

    Wichtig:Verwenden Sie in diesem Seed-Dokument keine echten Endnutzer- oder Produktionsdaten.


Cloud Storage for Firebase

  • google_firebase_storage_bucket: Einen vorhandenen Cloud Storage-Bucket für Firebase-SDKs, die Authentifizierung und Firebase Security Rules zugänglich machen

  • google_storage_bucket_object – ein Objekt einem Cloud Storage-Bucket hinzufügen

    Wichtig:Verwenden Sie in dieser Datei keine echten Endnutzer- oder Produktionsdaten.


Firebase Security Rules (für Cloud Firestore und Cloud Storage)

Firebase Realtime Database verwendet ein anderes Bereitstellungssystem für seine Firebase Security Rules.

  • google_firebaserules_ruleset: Definiert Firebase Security Rules, die für eine Cloud Firestore-Instanz oder einen Cloud Storage-Bucket gelten.

  • google_firebaserules_release: Bestimmte Regelsätze für eine Cloud Firestore-Instanz oder einen Cloud Storage-Bucket bereitstellen


Firebase App Check


Firebase Extensions



Beispielhafte Terraform-Konfigurationsdateien für häufige Anwendungsfälle



Fehlerbehebung und häufig gestellte Fragen