Beginnen Sie mit Terraform und Firebase

Firebase beginnt, Terraform zu unterstützen. Wenn Sie zu einem Team gehören, das die Erstellung von Firebase-Projekten mit der Bereitstellung bestimmter Ressourcen und aktivierten Diensten automatisieren und standardisieren möchte, dann kann die Verwendung von Terraform mit Firebase eine gute Lösung für Sie sein.

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

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

  • Verwendung von gCloud-CLI-Befehlen, die mit Terraform verbunden sind, um die in der .tf Datei angegebene Infrastruktur bereitzustellen.

Was können Sie mit Terraform und Firebase machen?

Der beispielhafte allgemeine Arbeitsablauf in dieser Anleitung ist das Erstellen eines neuen Firebase-Projekts mit einer Android-App. Aber Sie können mit Terraform noch viel mehr tun, wie zum Beispiel:

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

  • Verwalten Sie produktspezifische Konfigurationen und Aufgaben mit Terraform, wie zum Beispiel:

    • Anmeldeanbieter für die Firebase-Authentifizierung aktivieren.
    • Erstellen Sie Cloud Storage-Buckets oder Datenbankinstanzen und stellen Sie Firebase-Sicherheitsregeln für diese bereit.

Sie können Standard-Terraform-Konfigurationsdateien und -Befehle verwenden, um alle diese Aufgaben auszuführen. Und um Ihnen dabei zu helfen, haben wir Beispiel-Terraform-Konfigurationsdateien für mehrere gängige 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 und setzt daher grundlegende Kenntnisse im Umgang mit Terraform voraus. Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie diesen Workflow starten.

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

  • Installieren Sie die Google Cloud CLI (gCloud CLI). Melden Sie sich mit einem Benutzerkonto oder einem Dienstkonto an.


Schritt 1: Erstellen und passen Sie eine Terraform-Konfigurationsdatei an

Eine Terraform-Konfigurationsdatei benötigt zwei Hauptabschnitte (die im Folgenden ausführlich beschrieben werden):

Richten Sie Ihren provider ein

Unabhängig davon, um welche Firebase-Produkte oder -Dienste es sich handelt, ist eine provider erforderlich.

  1. Erstellen Sie eine Terraform-Konfigurationsdatei (wie die Datei main.tf ) in Ihrem lokalen Verzeichnis.

    In dieser Anleitung verwenden Sie diese Konfigurationsdatei, um sowohl die provider als auch die gesamte Infrastruktur anzugeben, die Terraform erstellen soll. Beachten Sie jedoch, dass Sie Optionen zum Einbinden des Anbieter-Setups haben.

  2. Fügen Sie das folgende provider Setup oben in die Datei main.tf ein.

    Sie müssen den google-beta Anbieter verwenden, da es sich um eine Betaversion der Verwendung von Firebase mit Terraform handelt. Bei der Verwendung in der Produktion ist Vorsicht geboten.

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

    Erfahren Sie mehr über die verschiedenen Arten von projektbezogenen Attributen (einschließlich dessen, was in diesem Handbuch als „Kontingentprüfungsprojekt“ bezeichnet wird) bei der Verwendung von Terraform mit Firebase.

  3. Fahren Sie mit dem nächsten Abschnitt fort, um Ihre Konfigurationsdatei zu vervollständigen und anzugeben, welche Infrastruktur erstellt werden soll.

Geben Sie an, welche Infrastruktur mithilfe von resource erstellt werden soll

In Ihrer Terraform-Konfigurationsdatei (für dieses Handbuch Ihre main.tf Datei) müssen Sie die gesamte Infrastruktur angeben, die Terraform erstellen soll (d. h. alle Ressourcen, die Sie bereitstellen möchten, und alle Dienste, die Sie aktivieren möchten). In diesem Leitfaden finden Sie eine vollständige Liste aller Firebase-Ressourcen, die Terraform unterstützen .

  1. Öffnen Sie Ihre main.tf Datei.

  2. Fügen Sie im provider Setup die folgende Konfiguration von resource ein.

    In diesem einfachen Beispiel wird ein neues Firebase-Projekt erstellt und dann innerhalb dieses Projekts eine Firebase-Android-App 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: Führen Sie Terraform-Befehle aus, um die angegebene Infrastruktur zu erstellen

Um die Ressourcen bereitzustellen und die in Ihrer main.tf Datei angegebenen Dienste zu aktivieren, führen Sie die folgenden Befehle aus demselben Verzeichnis wie Ihre main.tf Datei aus. 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 Ihrer main.tf Datei angegebene Infrastruktur, indem Sie den folgenden Befehl ausführen:

    terraform apply
  3. Bestätigen Sie, dass alles wie erwartet bereitgestellt oder aktiviert wurde:

    • Option 1: Sehen Sie sich die in Ihrem Terminal gedruckte Konfiguration an, indem Sie den folgenden Befehl ausführen:

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



Firebase-Ressourcen mit Terraform-Unterstützung

Die folgenden Firebase- und Google-Ressourcen bieten Terraform-Unterstützung. Und wir fügen ständig weitere Ressourcen hinzu! Wenn Sie also die Ressource, die Sie mit Terraform verwalten möchten, nicht sehen, schauen Sie bald noch einmal nach, ob sie verfügbar ist, oder fordern Sie sie an, indem Sie ein Problem im GitHub-Repo einreichen .


Firebase-Projekt- und App-Management

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

  • google_firebase_project_location – Legen Sie den Speicherort für die standardmäßigen Google Cloud-Ressourcen des Projekts fest

  • Firebase-Apps


Firebase-Authentifizierung

Noch nicht unterstützt:

  • Konfigurieren der Multi-Faktor-Authentifizierung (MFA) über Terraform

Firebase-Echtzeitdatenbank

Noch nicht unterstützt:


Cloud Firestore

  • google_firestore_database – Erstellen Sie eine Cloud Firestore-Instanz

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

  • google_firestore_document – ​​Seed einer Cloud Firestore-Instanz mit einem bestimmten Dokument in einer Sammlung

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


Cloud-Speicher für Firebase


Firebase-Sicherheitsregeln (für Cloud Firestore und Cloud Storage)

Beachten Sie, dass die Firebase-Echtzeitdatenbank ein anderes Bereitstellungssystem für ihre Firebase-Sicherheitsregeln verwendet.

  • google_firebaserules_ruleset – Definieren Sie Firebase-Sicherheitsregeln, die für die Cloud Firestore-Instanz oder einen Cloud Storage-Bucket gelten

  • google_firebaserules_release – Stellen Sie bestimmte Regelsätze in der Cloud Firestore-Instanz oder einem Cloud Storage-Bucket bereit


Firebase-App-Check


Firebase-Erweiterungen



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



Fehlerbehebung und FAQ