Pierwsze kroki z Terraform i Firebase

Firebase zaczyna obsługiwać Terraform. Jeśli należysz do zespołu, który chce zautomatyzować i ujednolicić tworzenie projektów Firebase z określonymi zasobami i włączonymi usługami, używanie Terraform z Firebase może być dla Ciebie dobrym rozwiązaniem.

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

  • Utwórz i dostosuj plik 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 aprowizacji infrastruktury określonej w pliku .tf.

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

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

  • Usuwanie i modyfikowanie istniejącej infrastruktury za pomocą Terraform.

  • zarządzać konfiguracją i zadaniami związanymi z konkretnymi usługami za pomocą Terraform, np.:

    • Włączanie dostawców logowania Firebase Authentication.
    • Tworzenie zasobników Cloud Storage lub instancji bazy danych i wdrażanie dla nich Firebase Security Rules.
    • Tworzenie Firebase App Hosting backendów, kompilacji i innych powiązanych zasobów.

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



Ogólny przepływ pracy związany z używaniem Terraform w Firebase

Wymagania wstępne

Ten przewodnik to wprowadzenie do korzystania z Terraform w Firebase, dlatego zakłada podstawową znajomość Terraform. Zanim rozpoczniesz ten proces, upewnij się, że spełniasz te wymagania.

  • Zainstaluj Terraform i zapoznaj się z nim, 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 (opisane szczegółowo poniżej):

Konfigurowanie provider

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

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

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

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

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

    # 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 projektami (w tym o tym, co w tym przewodniku nazywamy „projektem sprawdzania limitu”) podczas korzystania z Terraform w Firebase.

  3. Aby dokończyć plik konfiguracyjny i określić, jaką infrastrukturę chcesz utworzyć, przejdź do następnej sekcji.

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

W pliku konfiguracji Terraform (w tym przewodniku jest to plik main.tf) musisz określić całą infrastrukturę, którą chcesz utworzyć za pomocą 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 sekcji konfiguracji provider umieść tę konfigurację resourcebloków.

    Ten podstawowy przykład tworzy nowy projekt Firebase, a następnie w tym projekcie tworzy 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 udostępnić zasoby i włączyć usługi określone w pliku main.tf, uruchom te 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 polecenia Terraform w tym katalogu, musisz zainicjować katalog konfiguracji i zainstalować dostawcę Google Terraform. W tym celu 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 skonfigurowane lub włączone zgodnie z oczekiwaniami:

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

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



Zasoby Firebase z obsługą Terraform

Te zasoby Firebase i Google są obsługiwane przez Terraform. Stale dodajemy nowe materiały. Jeśli nie widzisz zasobu, którym chcesz zarządzać za pomocą Terraform, sprawdź ponownie wkrótce, czy jest on dostępny, lub poproś o jego dodanie, zgłaszając problem w repozytorium GitHub.


Zarządzanie projektami i aplikacjami Firebase

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

  • Aplikacje Firebase


Firebase Authentication

Funkcja jeszcze nie jest obsługiwana:

  • Konfigurowanie uwierzytelniania wielopoziomowego (MFA) za pomocą Terraform

Firebase App Hosting


Firebase Data Connect


Firebase Realtime Database

Funkcja jeszcze nie jest obsługiwana:

  • 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łączanie wydajnych zapytań w przypadku Cloud Firestore

  • google_firestore_document – wypełnianie instancji Cloud Firestore konkretnym dokumentem w kolekcji

    Ważne: w tym dokumencie początkowym nie używaj prawdziwych danych użytkowników ani danych produkcyjnych.


Cloud Storage for Firebase

  • google_firebase_storage_bucket – udostępnianie istniejącego kosza Cloud Storage pakietom SDK Firebase, uwierzytelnianiu i Firebase Security Rules

  • google_storage_bucket_object – dodawanie obiektu do Cloud Storage zasobnika.

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


Firebase Security Rules (dla Cloud Firestore i Cloud Storage)

Pamiętaj, że Firebase Realtime Database używa innego systemu udostępniania dla swoich Firebase Security Rules.

  • google_firebaserules_ruleset – określ 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 w 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