Comece com Terraform e Firebase

O Firebase está começando a oferecer suporte ao Terraform . Se você faz parte de uma equipe que deseja automatizar e padronizar a criação de projetos do Firebase com recursos específicos provisionados e serviços habilitados, usar o Terraform com Firebase pode ser uma boa opção para você.

O fluxo de trabalho básico para usar o Terraform com Firebase inclui o seguinte:

  • Criar e customizar um arquivo de configuração do Terraform (um arquivo .tf ) que especifica a infraestrutura que você deseja provisionar (ou seja, os recursos que você deseja provisionar e os serviços que deseja habilitar).

  • Usando comandos gCloud CLI que fazem interface com o Terraform para provisionar a infraestrutura especificada no arquivo .tf .

O que você pode fazer com Terraform e Firebase?

O exemplo de fluxo de trabalho generalizado neste guia é a criação de um novo projeto do Firebase com um aplicativo Android. Mas você pode fazer muito mais com o Terraform, como:

  • Exclua e modifique a infraestrutura existente usando Terraform.

  • Gerencie configurações e tarefas específicas do produto usando o Terraform, como:

    • Ativar provedores de login do Firebase Authentication.
    • Criação de buckets do Cloud Storage ou instâncias de banco de dados e implantação de regras de segurança do Firebase para eles.

Você pode usar arquivos de configuração e comandos padrão do Terraform para realizar todas essas tarefas. E para ajudá-lo com isso, fornecemos exemplos de arquivos de configuração do Terraform para vários casos de uso comuns.



Fluxo de trabalho generalizado para usar Terraform com Firebase

Pré-requisitos

Este guia é uma introdução ao uso do Terraform com Firebase, portanto, pressupõe proficiência básica com Terraform. Certifique-se de ter concluído os seguintes pré-requisitos antes de iniciar este fluxo de trabalho.

  • Instale o Terraform e familiarize-se com o Terraform usando seus tutoriais oficiais.

  • Instale a Google Cloud CLI (gCloud CLI). Faça login usando uma conta de usuário ou uma conta de serviço .


Etapa 1: criar e personalizar um arquivo de configuração do Terraform

Um arquivo de configuração do Terraform precisa de duas seções principais (que são descritas em detalhes abaixo):

Configure seu provider

É necessária uma configuração provider , independentemente dos produtos ou serviços do Firebase envolvidos.

  1. Crie um arquivo de configuração do Terraform (como o arquivo main.tf ) em seu diretório local.

    Neste guia, você usará este arquivo de configuração para especificar a configuração do provider e toda a infraestrutura que deseja que o Terraform crie. Observe, porém, que você tem opções sobre como incluir a configuração do provedor.

  2. Inclua a seguinte configuração provider na parte superior do arquivo main.tf

    Você deve usar o provedor google-beta porque esta é uma versão beta do uso do Firebase com Terraform. Tenha cuidado ao usar na produção.

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

    Saiba mais sobre os diferentes tipos de atributos relacionados ao projeto (incluindo o que este guia chama de "projeto de verificação de cota") ao usar o Terraform com Firebase.

  3. Continue na próxima seção para concluir seu arquivo de configuração e especificar qual infraestrutura criar.

Especifique qual infraestrutura criar usando blocos resource

Em seu arquivo de configuração do Terraform (para este guia, seu arquivo main.tf ), você precisa especificar toda a infraestrutura que deseja que o Terraform crie (ou seja, todos os recursos que deseja provisionar e todos os serviços que deseja habilitar). Neste guia, encontre uma lista completa de todos os recursos do Firebase compatíveis com o Terraform .

  1. Abra seu arquivo main.tf

  2. Na configuração provider , inclua a seguinte configuração de blocos resource .

    Este exemplo básico cria um novo projeto do Firebase e, em seguida, cria um aplicativo Firebase para Android nesse projeto.

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


Etapa 2: execute comandos do Terraform para criar a infraestrutura especificada

Para provisionar os recursos e ativar os serviços especificados no arquivo main.tf , execute os comandos a seguir no mesmo diretório do arquivo main.tf Para obter informações detalhadas sobre esses comandos, consulte a documentação do Terraform .

  1. Se esta for a primeira vez que você executa comandos do Terraform no diretório, será necessário inicializar o diretório de configuração e instalar o provedor Google Terraform. Faça isso executando o seguinte comando:

    terraform init
  2. Crie a infraestrutura especificada em seu arquivo main.tf executando o seguinte comando:

    terraform apply
  3. Confirme se tudo foi provisionado ou habilitado conforme esperado:

    • Opção 1: Veja a configuração impressa em seu terminal executando o seguinte comando:

      terraform show
    • Opção 2: visualize seu projeto do Firebase no console do Firebase .



Recursos do Firebase com suporte Terraform

Os seguintes recursos do Firebase e do Google têm suporte para Terraform. E estamos adicionando mais recursos o tempo todo! Portanto, se você não encontrar o recurso que deseja gerenciar com o Terraform, verifique novamente em breve para ver se ele está disponível ou solicite-o registrando um problema no repositório GitHub .


Gerenciamento de projetos e aplicativos do Firebase

  • google_firebase_project – habilite os serviços do Firebase em um projeto existente do Google Cloud

  • google_firebase_project_location – defina o local para os recursos padrão do Google Cloud do projeto

  • Aplicativos Firebase


Autenticação Firebase

Ainda não suportado:

  • Configurando a autenticação multifator (MFA) via Terraform

Banco de dados em tempo real do Firebase

Ainda não suportado:

  • Implantando regras de segurança do Firebase Realtime Database via Terraform (saiba como implantar essas regras usando outras ferramentas, incluindo opções programáticas)

Cloud Fire Store

  • google_firestore_database – crie uma instância do Cloud Firestore

  • google_firestore_index – permite consultas eficientes para Cloud Firestore

  • google_firestore_document – ​​propaga uma instância do Cloud Firestore com um documento específico em uma coleção

    Importante: Não use dados reais do usuário final ou de produção neste documento inicial.


Armazenamento em nuvem para Firebase


Regras de segurança do Firebase (para Cloud Firestore e Cloud Storage)

Observe que o Firebase Realtime Database usa um sistema de provisionamento diferente para suas regras de segurança do Firebase.

  • google_firebaserules_ruleset – defina regras de segurança do Firebase que se aplicam à instância do Cloud Firestore ou a um bucket do Cloud Storage

  • google_firebaserules_release – implantar conjuntos de regras específicos na instância do Cloud Firestore ou em um bucket do Cloud Storage


Verificação do aplicativo Firebase


Extensões do Firebase



Exemplos de arquivos de configuração do Terraform para casos de uso comuns



Solução de problemas e perguntas frequentes