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:

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

  • używanie poleceń interfejsu wiersza poleceń gcloud, które współpracują z Terraform, 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łączam dostawców logowania w Uwierzytelnianiu Firebase.
    • Tworzenie zasobników lub instancji bazy danych Cloud Storage i wdrażanie Reguły zabezpieczeń Firebase.

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.



Uogólniony przepływ pracy dotyczący używania Terraform z 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.

  • Instalowanie Google Cloud CLI (gcloud CLI). Zaloguj się za pomocą konto użytkownika lub koncie 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 bez względu na to, które produkty lub usługi Firebase są zaangażowane.

  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 = "~> 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 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.

    Ten podstawowy przykład tworzy nowy projekt Firebase, a następnie tworzy aplikację Firebase 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 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 sekcji Dokumentacja Terraform.

  1. Jeśli po raz pierwszy uruchamiasz polecenia Terraform w musisz zainicjować katalog konfiguracji i zainstalować dostawcą Google Terraform. 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. Wyświetl projekt Firebase w Konsoli Firebase.



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łączyć 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 wielopoziomowego (MFA) za pomocą Terraform

Baza danych czasu rzeczywistego Firebase

Jeszcze nieobsługiwane:

  • Wdrażanie reguł zabezpieczeń Bazy danych czasu rzeczywistego Firebase za pomocą Terraform (dowiedz się, jak wdróż te reguły za pomocą innych narzędzi, w tym opcji automatyzacji)

Cloud Firestore

  • google_firestore_database – utworzyć instancję Cloud Firestore

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

  • google_firestore_document – inicjowanie instancji 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 dla Firebase

. .

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

Pamiętaj, że Baza danych czasu rzeczywistego Firebase używa innego systemu udostępniania Reguły zabezpieczeń Firebase.

  • google_firebaserules_ruleset – zdefiniować reguły zabezpieczeń Firebase dotyczące instancji Cloud Firestore lub Zasobnik Cloud Storage

  • google_firebaserules_release – wdrożyć określone zestawy reguł w instancji Cloud Firestore lub Zasobnik Cloud Storage


Firebase App Check


Rozszerzenia w Firebase



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



Rozwiązywanie problemów i najczęstsze pytania