Erste Schritte mit Terraform und Firebase

Firebase wird bald unterstützt Terraform: Wenn Sie in einem Team arbeiten, das das Erstellen von Firebase-Projekten mit bestimmten bereitgestellten Ressourcen und aktivierten Diensten automatisieren und standardisieren möchte, ist die Verwendung von Terraform mit Firebase eine gute Lösung.

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

  • Erstellen und Anpassen einer Terraform-Konfigurationsdatei (.tf-Datei), in der die zu bereitstellende Infrastruktur angegeben ist (d. h. die zu bereitstellenden Ressourcen und die zu aktivierenden Dienste).

  • Mit gcloud CLI-Befehlen, die als Schnittstelle zu Terraform dienen, die in der Datei .tf angegebene Infrastruktur bereitstellen.

Was kann ich mit Terraform und Firebase tun?

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

  • Löschen und ändern Sie die vorhandene Infrastruktur mit Terraform.

  • Verwalten Sie produktspezifische Konfigurationen und Aufgaben mit Terraform, z. B.:

    • Firebase Authentication-Anmeldeanbieter werden aktiviert.
    • Cloud Storage Buckets oder Datenbankinstanzen werden erstellt und bereitgestellt Firebase Security Rules.

Mit den standardmäßigen Terraform-Konfigurationsdateien und -Befehlen können Sie all diese Schritte ausführen. Aufgaben. Um Ihnen dabei zu helfen, haben wir Terraform-Konfigurationsdateien für verschiedene häufige Anwendungsfälle Cases.



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 also davon ausgegangen, Grundkenntnisse in Terraform. Prüfen Sie, ob Sie die folgenden Schritte ausgeführt haben: Voraussetzungen erfüllt, bevor Sie diesen Workflow starten.

  • Terraform installieren und sich mithilfe der offiziellen Anleitungen mit Terraform vertraut machen.

  • Google Cloud CLI installieren (gcloud CLI). Anmeldung mit Nutzerkonto oder Dienstkonto.


Schritt 1: Terraform-Konfigurationsdatei erstellen und anpassen

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

provider einrichten

provider muss eingerichtet werden, unabhängig davon, welche Firebase-Produkte oder -Dienste beteiligt sind.

  1. Terraform-Konfigurationsdatei (z. B. main.tf-Datei) lokal erstellen -Verzeichnis.

    In dieser Anleitung verwenden Sie diese Konfigurationsdatei, um sowohl das provider und die Infrastruktur, die Sie mit Terraform erstellen möchten. Hinweis: Es gibt jedoch Optionen, wie Sie die Anbietereinrichtung einbinden können.

  2. Fügen Sie das folgende provider-Setup am Anfang der Datei main.tf ein.

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

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

    Weitere Informationen zu den verschiedenen Arten von projektbezogenen Attributen (einschließlich des in diesem Leitfaden als „Quota-Check-Projekt“ bezeichneten Projekts) bei der Verwendung von Terraform mit Firebase

  3. Fahren Sie mit dem nächsten Abschnitt fort, um die Konfigurationsdatei zu vervollständigen Infrastruktur erstellen.

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

In Ihrer Terraform-Konfigurationsdatei (für diese Anleitung die Datei main.tf) müssen Sie Folgendes tun: geben Sie die gesamte Infrastruktur an, die Terraform erstellen soll (d. h. alle Ressourcen, die Sie bereitstellen möchten, und alle Dienste, die Sie aktivieren möchten. In finden Sie eine vollständige Liste aller Firebase-Ressourcen, die Terraform unterstützen

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

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

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

    # 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

So stellen Sie die Ressourcen bereit und aktivieren die in der main.tf angegebenen Dienste: -Datei, führen Sie die folgenden Befehle im selben Verzeichnis wie Ihre main.tf-Datei aus. Detaillierte Informationen zu diesen Befehlen finden Sie in der Terraform-Dokumentation

  1. Wenn Sie zum ersten Mal Terraform-Befehle in der müssen Sie das Konfigurationsverzeichnis initialisieren und Terraform-Anbieter von Google. Führen Sie dazu den folgenden Befehl aus:

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

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

    • Option 1: Sehen Sie sich die Konfiguration an, die in Ihrem Terminal ausgegeben wird, indem Sie den folgenden Befehl:

      terraform show
    • Option 2: Sehen Sie sich Ihr Firebase-Projekt in der Firebase-Konsole.



Firebase-Ressourcen mit Terraform-Unterstützung

Die folgenden Firebase- und Google-Ressourcen unterstützen Terraform. Und wir und fügen ständig neue Ressourcen hinzu. Wenn Sie also die Ressource, die Sie die Sie mit Terraform verwalten möchten, sehen Sie später noch einmal nach, anfordern bis Ein Problem im GitHub-Repository melden


Firebase-Projekt- und App-Verwaltung

  • google_firebase_project – Firebase-Dienste für ein vorhandenes Google Cloud-Projekt aktivieren

  • Firebase-Apps


Firebase Authentication

  • google_identity_platform_configGoogle Cloud Identity Platform (GCIP) aktivieren (das Back-End für Firebase Authentication) und Authentifizierungseinstellungen auf Projektebene angeben,

    • Zum Konfigurieren von Firebase Authentication über Terraform muss GCIP aktiviert sein. In der Beispieldatei .tf finden Sie Informationen zum Einrichten von Firebase Authentication.

    • Das Projekt, in dem Terraform GCIP und/oder Firebase Authentication aktiviert muss das Blaze-Preismodell nutzen (d. h., das Projekt muss ein verknüpftes Cloud Billing-Konto). Sie können dies programmatisch tun, indem Sie das Festlegen der billing_account in der Ressource google_project.

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

  • google_identity_platform_default_supported_idp_config: Konfigurieren gängiger föderierter Identitätsanbieter wie Google, Facebook oder Apple

  • identity_platform_oauth_idp_config – Beliebige Quellen des OAuth-Identitätsanbieters konfigurieren

  • google_identity_platform_inbound_saml_config – SAML-Integrationen konfigurieren

Noch nicht unterstützt:

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

Firebase Realtime Database

Noch nicht unterstützt:

  • Firebase Realtime Database Security Rules über Terraform bereitstellen (Informationen zum diese Rules bereitstellen andere Tools verwenden, z. B. programmatische Optionen)

Cloud Firestore

  • google_firestore_databaseCloud Firestore-Instanz erstellen

  • google_firestore_index – Effiziente Abfragen für Cloud Firestore aktivieren

  • google_firestore_documentCloud Firestore-Instanz mit einem bestimmten Dokument in einer Sammlung starten

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


Cloud Storage for Firebase


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

Beachten Sie, dass Firebase Realtime Database ein anderes Bereitstellungssystem für Firebase Security Rules.

  • google_firebaserules_ruleset – definieren Sie Firebase Security Rules, die für die Cloud Firestore-Instanz gelten, Cloud Storage Bucket

  • google_firebaserules_release – bestimmte Regelsätze auf der Instanz Cloud Firestore oder in einer Cloud Storage Bucket


Firebase App Check


Firebase Extensions



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



Fehlerbehebung und häufig gestellte Fragen