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 Firebase projekty z określonymi zasobami i włączonymi usługami, a następnie Może Ci się przydać Terraform z Firebase.

Podstawowy proces korzystania z Terraform z Firebase obejmuje:

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

  • za pomocą poleceń gcloud CLI, które łączą się z Terraform w celu: udostępnić infrastrukturę określoną w pliku .tf.

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

Przykładowy uogólniony przepływ pracy w tym przewodniku tworzy nowy projekt Firebase z aplikacją na Androida. Ale możesz zrobić wiele z Terraform, na przykład:

  • Usuń i zmodyfikuj istniejącą infrastrukturę za pomocą Terraform.

  • Zarządzaj konfiguracjami i zadaniami konkretnych usług za pomocą Terraform, takich jak:

    • Włączanie dostawców logowania Firebase Authentication.
    • Tworzę zasobniki lub instancje bazy danych Cloud Storage i wdrażam je Firebase Security Rules.

Aby to zrobić, możesz użyć standardowych plików konfiguracyjnych Terraform i poleceń zadania. Aby Ci w tym pomóc, przygotowaliśmy przykładowe pliki konfiguracyjne Terraform do różnych zastosowań przypadków.



Ogólny proces korzystania z Terraform w Firebase

Wymagania wstępne

Ten przewodnik zawiera wprowadzenie do korzystania z Terraform i Firebase, więc zakłada, że zakłada się, i podstawowej biegłości w Terraform. Upewnij się, że zostały wykonane te czynności wymagań wstępnych, zanim rozpoczniesz ten przepływ pracy.

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

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


Krok 1. Utwórz i dostosuj plik konfiguracyjny Terraform

Plik konfiguracji Terraform musi mieć 2 główne sekcje (które zostały szczegółowo opisane poniżej):

Skonfiguruj urządzenie 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 lokalnym katalogu katalogu.

    W tym przewodniku przy użyciu tego pliku konfiguracyjnego określisz zarówno provider, konfiguracji i całej infrastruktury, którą Terraform ma utworzyć. Uwaga: ale możesz uwzględnić konfigurację dostawcy.

  2. Na początku pliku main.tf umieść tę konfigurację provider.

    Musisz użyć dostawcy google-beta, ponieważ jest to wersja beta usługi za pomocą Firebase z Terraform. Zachowaj ostrożność podczas korzystania z wersji produkcyjnej.

    # 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 rodzajów atrybutów związanych z projektami, (w tym nazywa się w tym przewodniku „projektem kontroli limitów”), jeśli używasz Terraform z Firebase.

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

Określanie infrastruktury do utworzenia za pomocą blokad resource

W pliku konfiguracji Terraform (w tym przewodniku, czyli w pliku main.tf) musisz wykonać określ 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 w tym przewodniku znajdziesz pełną listę Zasoby Firebase obsługujące Terraform

  1. Otwórz plik main.tf.

  2. W konfiguracji provider uwzględnij tę konfigurację: resource bloki.

    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 polecenie to polecenie:

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

    • Opcja 1. Sprawdź konfigurację wydrukowaną w terminalu, uruchamiając polecenie 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. Jesteśmy dodając coraz więcej zasobów. Jeśli więc nie widzisz zasobu, jeśli chcesz zarządzać nią za pomocą Terraform, sprawdź za jakiś czas, czy jest ona dostępna lub poproś o to do zgłaszanie problemu w repozytorium GitHub.


Zarządzanie projektami i aplikacjami w Firebase

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

  • Aplikacje Firebase


Firebase Authentication

Jeszcze nieobsługiwane:

  • Konfigurowanie uwierzytelniania wielopoziomowego (MFA) za pomocą Terraform

Firebase Realtime Database

Jeszcze nieobsługiwane:

  • Wdrażanie Firebase Realtime Database Security Rules za pomocą Terraform (dowiedz się, jak wdróż te Rules za pomocą innych narzędzi, w tym opcji automatyzacji)

Cloud Firestore

  • google_firestore_database – utwórz instancję Cloud Firestore.

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

  • google_firestore_document – inicjowanie wystąpienia Cloud Firestore z określonym dokumentem w kolekcji

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


Cloud Storage for Firebase


Firebase Security Rules (dla Cloud Firestore i Cloud Storage)

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

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

  • google_firebaserules_release – wdróż określone zestawy reguł w instancji Cloud Firestore lub Cloud Storage zasobnik


Firebase App Check


Firebase Extensions



Przykładowe pliki konfiguracyjne Terraform do typowych przypadków użycia



Rozwiązywanie problemów i najczęstsze pytania