Premiers pas avec Terraform et Firebase

Firebase commence à prendre en charge Terraform : Si vous faites partie d'une équipe qui souhaite automatiser et standardiser la création de Firebase avec des ressources spécifiques provisionnées et des services activés, Terraform avec Firebase peut vous convenir.

Le workflow de base pour utiliser Terraform avec Firebase inclut les éléments suivants:

  • créer et personnaliser un fichier de configuration Terraform (un fichier .tf), qui spécifie l'infrastructure à provisionner (c'est-à-dire les ressources que vous et les services que vous souhaitez activer).

  • À l'aide de commandes gcloud CLI qui interagissent avec Terraform pour provisionner l'infrastructure spécifiée dans le fichier .tf.

Que pouvez-vous faire avec Terraform et Firebase ?

L'exemple de workflow généralisé de ce guide crée un projet Firebase avec une application Android. Mais vous pouvez faire beaucoup de choses d'autres fonctionnalités de Terraform, par exemple:

  • Supprimer et modifier une infrastructure existante à l'aide de Terraform

  • Gérer la configuration et les tâches spécifiques à un produit à l'aide de Terraform, par exemple:

    • Activation des fournisseurs de connexion Firebase Authentication...
    • Créer et déployer Cloud Storage buckets ou instances de base de données Firebase Security Rules.

Vous pouvez utiliser des fichiers de configuration et des commandes Terraform standards pour effectuer toutes ces tâches. Pour vous aider, nous vous proposons exemples de fichiers de configuration Terraform pour plusieurs cas d'utilisation courants cas d'utilisation.



Workflow généralisé pour l'utilisation de Terraform avec Firebase

Prérequis

Ce guide est une introduction à l'utilisation de Terraform avec Firebase. Il suppose donc que vous avez des connaissances de base sur Terraform. Assurez-vous d'avoir effectué les opérations suivantes les prérequis avant de commencer ce workflow.

  • Installez Terraform et familiarisez-vous avec Terraform à l'aide de ses tutoriels officiels.

  • Installer le Google Cloud CLI (gcloud CLI). Connectez-vous à l'aide d'un compte utilisateur ou un compte de service.


Étape 1:Créez et personnalisez un fichier de configuration Terraform

Un fichier de configuration Terraform nécessite deux sections principales (décrites en détail ci-dessous):

Configurer votre provider

Une configuration de provider est requise, quels que soient les produits ou services Firebase impliqués.

  1. Créez un fichier de configuration Terraform (comme un fichier main.tf) dans votre répertoire local.

    Dans ce guide, vous utiliserez ce fichier de configuration pour spécifier à la fois provider et toute l'infrastructure que Terraform doit créer. Remarque : mais que vous avez la possibilité d'inclure la configuration du fournisseur.

  2. Incluez la configuration provider suivante en haut du fichier main.tf.

    Vous devez utiliser le fournisseur google-beta, car il s'agit d'une version bêta de à l'aide de Firebase avec Terraform. Soyez prudent lorsque vous l'utilisez en production.

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

    Découvrez les différents types d'attributs liés au projet (y compris ce que ce guide appelle le "projet de vérification des quotas") lorsque vous utilisez Terraform avec Firebase.

  3. Passez à la section suivante pour créer le fichier de configuration et spécifier les éléments de l'infrastructure à créer.

Spécifier l'infrastructure à créer à l'aide de blocs resource

Dans votre fichier de configuration Terraform (dans ce guide, il s'agit de votre fichier main.tf), vous devez : spécifie toute l'infrastructure que Terraform doit créer (c'est-à-dire toutes les ressources à provisionner et tous les services à activer). Dans ce guide, vous trouverez la liste complète de toutes les ressources Firebase compatibles avec Terraform.

  1. Ouvrez votre fichier main.tf.

  2. Dans la configuration provider, incluez la configuration suivante des blocs resource.

    Cet exemple de base crée un projet Firebase, puis crée l'application Android Firebase dans ce projet.

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


Étape 2:Exécuter les commandes Terraform pour créer l'infrastructure spécifiée

Pour provisionner les ressources et activer les services spécifiés dans votre main.tf , exécutez les commandes suivantes à partir du même répertoire que votre fichier main.tf. Pour en savoir plus sur ces commandes, consultez la Documentation Terraform

  1. Si vous exécutez des commandes Terraform pour la première fois dans vous devez initialiser le répertoire de configuration et installer le fournisseur Terraform pour Google. Pour ce faire, exécutez la commande suivante:

    terraform init
  2. Créez l'infrastructure spécifiée dans votre fichier main.tf en exécutant la commande la commande suivante:

    terraform apply
  3. Vérifiez que tout a été provisionné ou activé comme prévu:

    • Option 1:Consultez la configuration imprimée dans votre terminal en exécutant la commande la commande suivante:

      terraform show
    • Option 2:Affichez votre projet Firebase dans console Firebase.



Ressources Firebase compatibles avec Terraform

Les ressources Firebase et Google suivantes sont compatibles avec Terraform. Nous allons ajoutant des ressources en permanence ! Si vous ne voyez pas la ressource que vous souhaitez gérer avec Terraform, puis revenez bientôt pour voir s'il est disponible ou demandez-le par en signalant un problème dans le dépôt GitHub.


Gestion des projets et des applications Firebase

  • google_firebase_project : activer les services Firebase sur un projet Google Cloud existant

  • Applications Firebase


Firebase Authentication

  • google_identity_platform_config : activer Google Cloud Identity Platform (GCIP) (le backend de Firebase Authentication) ; et définir des paramètres d'authentification au niveau du projet

    • Pour configurer Firebase Authentication via Terraform, vous devez activer GCIP. Marque consultez les exemple de fichier .tf pour la configuration de Firebase Authentication.

    • Projet dans lequel Terraform activera GCIP et/ou Firebase Authentication être inclus dans la formule Blaze (le projet doit disposer d'un compte Cloud Billing associé). Vous pouvez le faire de manière programmatique en en paramétrant le billing_account dans la ressource google_project.

    • Cette ressource active également d'autres configurations, telles que des méthodes de connexion locale, telles que l'authentification anonyme, par e-mail/mot de passe ou par téléphone, ainsi que les fonctions de blocage et les domaines autorisés.

  • google_identity_platform_default_supported_idp_config : configurer des fournisseurs d'identité fédérés courants, tels que Google, Facebook ou Apple

  • identity_platform_oauth_idp_config : Configurer des sources de fournisseur d'identité OAuth (IdP) arbitraires

  • google_identity_platform_inbound_saml_config : configure les intégrations SAML.

Pas encore pris en charge:

  • Configurer l'authentification multifacteur (MFA) via Terraform

Firebase Realtime Database

Non compatible :

  • Déployer Firebase Realtime Database Security Rules via Terraform (découvrez comment déployer ces Rules à l'aide d'autres outils, y compris des options programmatiques)

Cloud Firestore

  • google_firestore_database : créez une instance Cloud Firestore.

  • google_firestore_index : activer des requêtes efficaces pour Cloud Firestore

  • google_firestore_document : alimenter une instance Cloud Firestore avec un document spécifique d'une collection

    Important : N'utilisez pas de données réelles d'utilisateur final ni de données de production dans ce document de référence.


Cloud Storage for Firebase


Firebase Security Rules (pour Cloud Firestore et Cloud Storage)

Notez que Firebase Realtime Database utilise un système de provisionnement différent pour ses Firebase Security Rules

  • google_firebaserules_ruleset : définit les Firebase Security Rules qui s'appliquent à l'instance Cloud Firestore ou à un bucket Cloud Storage.

  • google_firebaserules_release : déployez des ensembles de règles spécifiques sur l'instance Cloud Firestore ou dans un bucket Cloud Storage.


Firebase App Check


Firebase Extensions



Exemples de fichiers de configuration Terraform pour les cas d'utilisation courants



Dépannage et questions fréquentes