Zacznij korzystać z Terraform i Firebase

Firebase zaczyna wspierać 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życie Terraform z Firebase może być dla Ciebie dobrym rozwiązaniem.

Podstawowy przepływ pracy przy korzystaniu z Terraform z Firebase obejmuje:

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

  • Używanie poleceń interfejsu CLI gCloud współpracujących z Terraform w celu zapewnienia infrastruktury określonej w pliku .tf .

Co można zrobić z Terraformem i Firebase?

Przykładowy uogólniony przepływ pracy w tym przewodniku polega na utworzeniu nowego projektu Firebase za pomocą aplikacji na Androida. Ale dzięki Terraform możesz zrobić o wiele więcej, na przykład:

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

  • Zarządzaj konfiguracją i zadaniami specyficznymi dla produktu za pomocą Terraform, takimi jak:

    • Włączanie dostawców logowania Firebase Authentication.
    • Tworzenie zasobników Cloud Storage lub instancji baz danych i wdrażanie dla nich reguł bezpieczeństwa Firebase.

Do wykonania wszystkich tych zadań można 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 zastosowań.



Uogólniony przepływ pracy dotyczący korzystania z Terraform z Firebase

Warunki wstępne

Ten przewodnik stanowi wprowadzenie do korzystania z Terraform z Firebase, więc zakłada podstawową biegłość w Terraform. Przed rozpoczęciem tego przepływu pracy upewnij się, że spełniono następujące wymagania wstępne.

  • Zainstaluj Terraform i zapoznaj się z Terraform, korzystając z oficjalnych tutoriali.

  • Zainstaluj interfejs CLI Google Cloud (gCloud CLI). Zaloguj się za pomocą konta użytkownika lub konta serwisowego .


Krok 1: Utwórz i dostosuj plik konfiguracyjny Terraform

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

Skonfiguruj swojego provider

Bez względu na produkty i usługi Firebase wymagana jest konfiguracja provider .

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

    W tym przewodniku użyjesz tego pliku konfiguracyjnego do określenia zarówno konfiguracji provider , jak i całej infrastruktury, którą chcesz utworzyć Terraform. Pamiętaj jednak, że masz opcje uwzględniania konfiguracji dostawcy.

  2. Dołącz następującą konfigurację provider na górze pliku main.tf

    Musisz skorzystać z dostawcy google-beta , ponieważ jest to wersja beta umożliwiająca korzystanie z Firebase z Terraform. Zachowaj ostrożność podczas stosowania w produkcji.

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

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

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

Określ, jaką infrastrukturę utworzyć przy użyciu bloków resource

W pliku konfiguracyjnym Terraform (w tym przewodniku jest to plik main.tf ) musisz określić całą infrastrukturę, którą Terraform ma utworzyć (co oznacza 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 następującą konfigurację bloków resource .

    Ten podstawowy przykład tworzy nowy projekt Firebase, a następnie tworzy w tym projekcie 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 następujące polecenia z tego samego katalogu, w którym znajduje się plik main.tf Szczegółowe informacje na temat tych poleceń można znaleźć w dokumentacji Terraform .

  1. Jeśli po raz pierwszy uruchamiasz polecenia Terraform w tym katalogu, musisz zainicjować katalog konfiguracyjny i zainstalować dostawcę Google Terraform. Zrób to, uruchamiając następujące polecenie:

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

    terraform apply
  3. Upewnij się, że wszystko zostało udostępnione lub włączone zgodnie z oczekiwaniami:

    • Opcja 1: Zobacz konfigurację wydrukowaną w terminalu, uruchamiając następujące polecenie:

      terraform show
    • Opcja 2: Wyświetl swój projekt Firebase w konsoli Firebase .



Zasoby Firebase z obsługą Terraform

Następujące zasoby Firebase i Google obsługują Terraform. Cały czas dodajemy więcej zasobów! Jeśli więc nie widzisz zasobu, którym chcesz zarządzać za pomocą Terraform, sprawdź wkrótce, czy jest on dostępny, lub poproś o niego, zgłaszając problem w repozytorium GitHub .


Zarządzanie projektami i aplikacjami Firebase

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

  • google_firebase_project_location — ustaw lokalizację domyślnych zasobów Google Cloud projektu

  • Aplikacje Firebase


Uwierzytelnianie Firebase

Jeszcze nieobsługiwane:

  • Konfigurowanie uwierzytelniania wieloskładnikowego (MFA) za pośrednictwem Terraform

Baza danych czasu rzeczywistego Firebase

Jeszcze nieobsługiwane:

  • Wdrażanie reguł bezpieczeństwa bazy danych Firebase Realtime za pośrednictwem Terraform (dowiedz się, jak wdrożyć te reguły przy użyciu innych narzędzi, w tym opcji programistycznych)

Chmura Firestore

  • google_firestore_database — utwórz instancję Cloud Firestore

  • google_firestore_index — włącz wydajne zapytania do Cloud Firestore

  • google_firestore_document — zapełnij instancję Cloud Firestore określonym dokumentem w kolekcji

    Ważne: w tym dokumencie źródłowym nie należy wykorzystywać rzeczywistych danych użytkownika końcowego ani danych produkcyjnych.


Magazyn w chmurze dla Firebase


Reguły bezpieczeństwa Firebase (dla Cloud Firestore i Cloud Storage)

Należy pamiętać, że baza danych Firebase Realtime Database korzysta z innego systemu udostępniania dla swoich reguł bezpieczeństwa Firebase.

  • google_firebaserules_ruleset — zdefiniuj reguły bezpieczeństwa Firebase, które mają zastosowanie do instancji Cloud Firestore lub segmentu Cloud Storage

  • google_firebaserules_release — wdrażaj określone zestawy reguł w instancji Cloud Firestore lub w zasobniku Cloud Storage


Rozszerzenia Firebase



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



Rozwiązywanie problemów i często zadawane pytania