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 projets Firebase avec des ressources spécifiques provisionnées et des services activés, Terraform avec Firebase peut être une bonne solution.

Le workflow de base pour utiliser Terraform avec Firebase comprend les étapes suivantes:

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

  • Utiliser des commandes gcloud CLI qui s'interfacent 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 consiste à créer un projet Firebase avec une application Android. Terraform offre bien d'autres fonctionnalités, par exemple:

  • Supprimez et modifiez l'infrastructure existante à l'aide de Terraform.

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

    • Activer les fournisseurs de connexion Firebase Authentication.
    • Créer Cloud Storage buckets ou instances de base de données et déployer Firebase Security Rules pour ceux-ci

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



Workflow généralisé pour utiliser Terraform avec Firebase

Conditions préalables

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 rempli les conditions préalables suivantes avant de commencer ce workflow.

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

  • Installez Google Cloud CLI (gcloud CLI). Connectez-vous à l'aide d'un compte utilisateur ou d'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 provider est requise, quels que soient les produits ou services Firebase concerné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 la configuration de provider et toute l'infrastructure que Terraform doit créer. Notez toutefois 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'utilisation 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 compléter le fichier de configuration et spécifier l'infrastructure à créer.

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

Dans votre fichier de configuration Terraform (votre fichier main.tf pour ce guide), vous devez spécifier toute l'infrastructure que Terraform doit créer, c'est-à-dire toutes les ressources que vous souhaitez provisionner et tous les services que vous souhaitez 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. Sous la configuration de provider, incluez la configuration suivante des blocs resource.

    Cet exemple de base crée un projet Firebase, puis une 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écutez des commandes Terraform pour créer l'infrastructure spécifiée

Pour provisionner les ressources et activer les services spécifiés dans votre fichier 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 ce répertoire, 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 suivante:

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

    • Option 1:Affichez la configuration dans votre terminal en exécutant la commande suivante:

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



Ressources Firebase compatibles avec Terraform

Les ressources Firebase et Google suivantes sont compatibles avec Terraform. Et nous ajoutons de nouvelles ressources en permanence ! Par conséquent, si vous ne voyez pas la ressource que vous souhaitez gérer avec Terraform, vérifiez bientôt si elle est disponible ou demandez-la en soumettant un problème dans le dépôt GitHub.


Gérer les projets et les applications Firebase

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

  • Applications Firebase


Firebase Authentication

  • google_identity_platform_config : activez Google Cloud Identity Platform (GCIP), qui est le backend de Firebase Authentication, et fournissez des paramètres d'authentification au niveau du projet.

    • Pour configurer Firebase Authentication via Terraform, vous devez activer GCIP. Veillez à consulter l'exemple de fichier .tf pour savoir comment configurer Firebase Authentication.

    • Le projet dans lequel Terraform activera le GCIP et/ou Firebase Authentication doit être associé au forfait Blaze (c'est-à-dire que le projet doit disposer d'un compte Cloud Billing associé). Vous pouvez le faire de manière programmatique en définissant l'attribut billing_account dans la ressource google_project.

    • Cette ressource permet également d'effectuer davantage de configurations, telles que les méthodes de connexion locales (anonyme, e-mail/mot de passe et authentification par téléphone, par exemple), ainsi que les fonctions de blocage et les domaines autorisés.

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

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

  • google_identity_platform_inbound_saml_config : configure les intégrations SAML.

Non compatible:

  • Configurer l'authentification multifacteur (MFA) via Terraform

Firebase Realtime Database

Non compatible:

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

Cloud Firestore

  • google_firestore_database : créez une instance Cloud Firestore.

  • google_firestore_index : permet d'activer des requêtes efficaces pour Cloud Firestore.

  • google_firestore_document : insère un document spécifique dans une collection pour une instance Cloud Firestore

    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

  • google_firebase_storage_bucket : rendez un bucket Cloud Storage existant accessible pour les SDK Firebase, l'authentification et Firebase Security Rules

  • google_storage_bucket_object : ajoutez un objet à un bucket Cloud Storage.

    Important:N'utilisez pas de données réelles d'utilisateurs finaux ou de production dans ce fichier.


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 à une instance Cloud Firestore ou à un bucket Cloud Storage.

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


Firebase App Check


Firebase Extensions



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



Dépannage et questions fréquentes