Pierwsze kroki z Terraform i Firebase

Firebase zaczyna obsługiwać Terraform. Jeśli należysz do zespołu, który chce zautomatyzować i ustandaryzować tworzenie projektów Firebase z określonymi zasobami i włączonymi usługami, możesz skorzystać z Terraform w Firebase.

Podstawowy proces korzystania z Terraform w Firebase obejmuje te czynności:

  • Tworzenie i dostosowywanie pliku konfiguracji Terraform (pliku .tf), który określa infrastrukturę, którą chcesz zainicjować (czyli zasoby, które chcesz zainicjować, oraz usługi, które chcesz włączyć).

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

Co można robić w Terraform i Firebase?

Przykładowy ogólny proces roboczy w tym przewodniku to tworzenie nowego projektu Firebase z aplikacją na Androida. Ale możesz też zrobić znacznie więcej za pomocą Terraform, np.:

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

  • Za pomocą Terraform możesz zarządzać konfiguracją i zadaniami związanymi z poszczególnymi usługami, np.:

    • Włączanie dostawców logowania Firebase Authentication.
    • tworzenie Cloud Storage lub instancji bazy danych i wdrażanie dla nich Firebase Security Rules.

Aby wykonać te zadania, 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 na potrzeby kilku typowych zastosowań.



Uogólniony przepływ pracy dotyczący używania Terraform z Firebase

Wymagania wstępne

Ten przewodnik zawiera wprowadzenie do korzystania z Terraform z Firebase, więc zakłada podstawową znajomość Terraform. Zanim rozpoczniesz ten przepływ pracy, sprawdź, czy spełniasz te wymagania wstępne.

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

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


Krok 1. Utwórz i dostosuj plik konfiguracyjny Terraform

Plik konfiguracji Terraform wymaga dwóch głównych sekcji (opisane szczegółowo poniżej):

Konfigurowanie urządzenia provider

Konfiguracja provider jest wymagana niezależnie od tego, z których usług Firebase chcesz korzystać.

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

    W tym przewodniku użyjesz tego pliku konfiguracji, aby określić providerkonfigurację i całą infrastrukturę, którą ma utworzyć Terraform. Pamiętaj jednak, że możesz uwzględnić konfigurację dostawcy.

  2. U góry pliku main.tf umieść następującą konfigurację provider.

    Musisz użyć dostawcy google-beta, ponieważ jest to wersja beta korzystania z Firebase z Terraform. Zachowaj ostrożność podczas korzystania z tego pakietu w produkcji.

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

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

  3. Przejdź do następnej sekcji, aby uzupełnić plik konfiguracyjny i określić infrastrukturę do utworzenia.

Określ, jaką infrastrukturę utworzyć za pomocą bloków resource

W pliku konfiguracji Terraform (w tym przypadku pliku main.tf) musisz określić całą infrastrukturę, którą ma utworzyć Terraform (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, które obsługują Terraform.

  1. Otwórz plik main.tf.

  2. W ramach konfiguracji provider dodaj tę konfigurację bloków resource.

    W tym podstawowym przykładzie utworzymy nowy projekt Firebase, a potem w jego ramach aplikację Firebase na Androida.

    # 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 zainicjować zasoby i włączyć usługi określone w pliku main.tf, uruchom podane niżej polecenia w tym samym katalogu co plik main.tf. Szczegółowe informacje o tych poleceniach znajdziesz w dokumentacji Terraform.

  1. Jeśli po raz pierwszy uruchamiasz w tym katalogu polecenia Terraform, musisz zainicjować katalog konfiguracji i zainstalować dostawcę Terraform Google. W tym celu uruchom następujące 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 skonfigurowane lub włączone zgodnie z oczekiwaniami:

    • Opcja 1: aby wyświetlić konfigurację w terminalu, uruchom to polecenie:

      terraform show
    • Opcja 2: otwórz projekt Firebase w Firebase konsoli.



Zasoby Firebase z obsługą Terraform

Poniższe zasoby Firebase i Google obsługują Terraform. Stale dodajemy więcej zasobów. Jeśli nie widzisz zasobu, którym chcesz zarządzać za pomocą Terraform, wkrótce sprawdź, czy jest on dostępny, lub poproś o jego dodanie, zgłaszając problem w repozytorium GitHuba.


Zarządzanie projektami i aplikacjami w Firebase

  • google_firebase_project – włączanie usług Firebase w dotychczasowym projekcie Google Cloud.

  • Aplikacje Firebase


Firebase Authentication

Nieobsługiwane:

  • Konfigurowanie uwierzytelniania wielopoziomowego (MFA) za pomocą Terraform

Firebase Realtime Database

Nieobsługiwane:

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

Cloud Firestore

  • google_firestore_database – utwórz instancję Cloud Firestore.

  • google_firestore_index – włącz efektywne zapytania dla Cloud Firestore

  • google_firestore_document – zasilenie instancji Cloud Firestore określonym dokumentem w kolekcji.

    Ważne: w tym dokumencie wyjściowym nie używaj prawdziwych danych użytkownika ani danych produkcyjnych.


Cloud Storage for Firebase

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

  • google_storage_bucket_object – dodawanie obiektu do zasobnika Cloud Storage.

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


Firebase Security Rules (dla Cloud FirestoreCloud Storage)

Pamiętaj, że usługa Firebase Realtime Database korzysta z innego systemu obsługi administracyjnej na potrzeby zasobu 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 – wdrożenie określonych zbiorów reguł do instancji Cloud Firestore lub zasobnika Cloud Storage.


Firebase App Check


Firebase Extensions



Przykładowe pliki konfiguracji Terraform na potrzeby typowych zastosowań



Rozwiązywanie problemów i najczęstsze pytania