Pierwsze kroki z Terraform i Firebase

Firebase zaczyna obsługiwać Terraform. Jeśli jesteś członkiem zespołu, który chce zautomatyzować i ustandaryzować tworzenie projektów Firebase z udostępnionymi określonymi zasobami i włączonymi usługami, Terraform z Firebase może być dla Ciebie dobrym rozwiązaniem.

Podstawowy przepływ pracy podczas korzystania z Terraform z Firebase obejmuje:

  • utworzenie i dostosowanie pliku konfiguracji Terraform (plik .tf), który określa infrastrukturę, którą chcesz udostępnić (czyli zasoby, które chcesz udostępnić, i usługi, które chcesz włączyć);

  • Używanie poleceń gcloud CLI, które współpracują z Terraform, do obsługi infrastruktury określonej w pliku .tf.

Co można robić za pomocą Terraform i Firebase?

Przykładowy uogólniony przepływ pracy w tym przewodniku tworzy nowy projekt w Firebase z aplikacją na Androida. Terraform pozwala jednak na znacznie więcej, np.:

  • usuwać i modyfikować istniejącą infrastrukturę za pomocą Terraform;

  • Zarządzaj konfiguracją i zadaniami związanymi z konkretnymi usługami za pomocą Terraform, np.:

    • Włączam dostawców logowania Firebase Authentication.
    • Tworzenie zasobników lub instancji bazy danych Cloud Storage i wdrażanie dla nich Firebase Security Rules.
    • Tworzę backendy, kompilacje i inne powiązane zasoby (Firebase App Hosting).

Do wykonania wszystkich tych zadań możesz użyć standardowych plików konfiguracji i poleceń Terraform. Aby Ci w tym pomóc, udostępniliśmy przykładowe pliki konfiguracji Terraform dla kilku typowych przypadków użycia.



Ogólny przepływ pracy dotyczący korzystania z Terraform z Firebase

Wymagania wstępne

Ten przewodnik jest wprowadzeniem do korzystania z Terraform z Firebase, więc zakłada podstawową znajomość Terraform. Zanim rozpoczniesz ten proces, upewnij się, że zostały spełnione te wymagania wstępne.

  • Zainstaluj Terraform i zapoznaj się z tym narzędziem, korzystając z oficjalnych samouczków.

  • Zainstaluj Google Cloud CLI (gcloud CLI). Zaloguj się za pomocą konta użytkownika lub konta usługi.


Krok 1. Utwórz i dostosuj plik konfiguracji Terraform

Plik konfiguracji Terraform musi zawierać 2 główne sekcje (które szczegółowo opisujemy poniżej):

Konfigurowanie urządzenia provider

Konfiguracja provider jest wymagana niezależnie od tego, z jakich usług Firebase korzystasz.

  1. Utwórz plik konfiguracji Terraform (np. plik main.tf) w katalogu lokalnym.

    W tym przewodniku użyjesz tego pliku konfiguracji, aby określić zarówno konfigurację provider, jak i całą infrastrukturę, którą ma utworzyć Terraform. Pamiętaj jednak, że masz różne opcje konfiguracji dostawcy.

  2. U góry pliku main.tf umieść tę konfigurację provider.

    Musisz używać dostawcy google-beta, ponieważ jest to wersja beta Firebase z Terraform. Podczas korzystania z niej w środowisku produkcyjnym zachowaj ostrożność.

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

    Dowiedz się więcej o różnych typach atrybutów związanych z projektem (w tym o tym, co w tym przewodniku nazywamy „projektem sprawdzania limitów”) podczas korzystania z Terraform z Firebase.

  3. Przejdź do następnej sekcji, aby dokończyć plik konfiguracji i określić, jaką infrastrukturę chcesz utworzyć.

Określanie infrastruktury do utworzenia za pomocą bloków resource

W pliku konfiguracji Terraform (w tym przewodniku jest to plik main.tf) musisz określić całą infrastrukturę, którą Terraform ma utworzyć (czyli wszystkie zasoby, które chcesz udostępnić, i wszystkie usługi, które chcesz włączyć). W tym przewodniku znajdziesz pełną listę wszystkich zasobów Firebase obsługujących Terraform.

  1. Otwórz plik main.tf.

  2. W konfiguracji provider uwzględnij tę konfigurację bloków resource.

    Ten podstawowy przykład tworzy nowy projekt w Firebase, a następnie tworzy aplikację na Androida w tym projekcie.

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


Krok 2. Uruchom polecenia Terraform, aby utworzyć określoną infrastrukturę

Aby udostępnić zasoby i włączyć usługi określone w pliku main.tf, uruchom te polecenia w tym samym katalogu, w którym znajduje się plik main.tf. Szczegółowe informacje o tych poleceniach znajdziesz w dokumentacji Terraform.

  1. Jeśli po raz pierwszy uruchamiasz polecenia Terraform w katalogu, musisz zainicjować katalog konfiguracji i zainstalować dostawcę Google Terraform. Aby to zrobić, uruchom to polecenie:

    terraform init
  2. Utwórz infrastrukturę określoną w pliku main.tf, uruchamiając to polecenie:

    terraform apply
  3. Sprawdź, czy wszystko zostało udostępnione lub włączone zgodnie z oczekiwaniami:

    • Opcja 1. Wyświetl konfigurację w terminalu, uruchamiając to polecenie:

      terraform show
    • Opcja 2. Wyświetl projekt w Firebase w konsoli Firebase.



Zasoby Firebase z obsługą Terraform

Te zasoby Firebase i Google obsługują Terraform. Cały czas dodajemy nowe materiały. Jeśli nie widzisz zasobu, którym chcesz zarządzać za pomocą Terraform, sprawdź za jakiś czas, czy jest on dostępny, lub poproś o niego, zgłaszając problem w repozytorium GitHub.


Zarządzanie projektami w Firebase i aplikacjami

  • google_firebase_project – włącz usługi Firebase w istniejącym projekcie Google Cloud.

  • Aplikacje w Firebase


Firebase Authentication

Jeszcze nieobsługiwane:

  • Konfigurowanie uwierzytelniania wielopoziomowego (MFA) za pomocą Terraform

Firebase App Hosting


Firebase SQL Connect


Firebase Realtime Database

Jeszcze nieobsługiwane:

  • Wdrażanie Firebase Realtime Database Security Rules za pomocą Terraform (dowiedz się, jak wdrożyć te Security Rules za pomocą innych narzędzi, w tym opcji programistycznych)

Cloud Firestore

  • google_firestore_database – utwórz instancję Cloud Firestore.

  • google_firestore_index – włącz wydajne zapytania dla: Cloud Firestore

  • google_firestore_document – wypełnij instancję Cloud Firestore określonym dokumentem z kolekcji.

    Ważne: w tym dokumencie źródłowym nie używaj prawdziwych danych użytkowników ani danych produkcyjnych.


Cloud Storage for Firebase

  • google_firebase_storage_bucket – udostępnij istniejący zasobnik Cloud Storage pakietom SDK Firebase, uwierzytelnianiu i Firebase Security Rules.

  • google_storage_bucket_object – dodawanie obiektu do zasobnika Cloud Storage

    Ważne: nie używaj w tym pliku prawdziwych danych użytkowników ani danych produkcyjnych.


Firebase Security Rules (za Cloud Firestore i Cloud Storage)

Pamiętaj, że Firebase Realtime Database używa innego systemu obsługi administracyjnej dla Firebase Security Rules.

  • google_firebaserules_ruleset – definiowanie Firebase Security Rules, które mają zastosowanie do instancji Cloud Firestore lub zasobnika Cloud Storage

  • google_firebaserules_release – wdrażanie określonych zestawów reguł w instancji Cloud Firestore lub zasobniku Cloud Storage.


Firebase App Check


Firebase Extensions



Przykładowe pliki konfiguracji Terraform dla typowych przypadków użycia



Rozwiązywanie problemów i najczęstsze pytania