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 fournies et des services activés, l'utilisation de Terraform avec Firebase peut être une bonne solution pour vous.

Le workflow de base pour l'utilisation de Terraform avec Firebase comprend les éléments suivants :

  • Création et personnalisation d'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 les 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 flux de travail généralisé dans ce guide consiste à créer un nouveau projet Firebase avec une application Android. Mais vous pouvez faire bien plus avec Terraform, comme :

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

  • Gérez la configuration et les tâches spécifiques au produit à l'aide de Terraform, telles que :

    • Activation des fournisseurs de connexion à l'authentification Firebase.
    • Création de buckets Cloud Storage ou d'instances de base de données et déploiement de règles de sécurité Firebase pour ceux-ci.

Vous pouvez utiliser des fichiers de configuration et des commandes Terraform standard pour accomplir toutes ces tâches. Et pour vous aider, nous avons fourni des exemples de fichiers de configuration Terraform pour plusieurs cas d'utilisation courants.



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

Conditions préalables

Ce guide est une introduction à l'utilisation de Terraform avec Firebase, il suppose donc une maîtrise de base de Terraform. Assurez-vous d'avoir rempli les conditions préalables suivantes avant de démarrer ce flux de travail.

  • Installez Terraform et familiarisez-vous avec Terraform à l'aide de leurs didacticiels officiels.

  • Installez Google Cloud CLI (gCloud CLI). Connectez-vous en utilisant un compte utilisateur ou un compte de service .


Étape 1 : Créer et personnaliser un fichier de configuration Terraform

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

Configurez votre provider

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

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

    Dans ce guide, vous utiliserez ce fichier de configuration pour spécifier à la fois la configuration du provider et toute l'infrastructure que vous souhaitez que Terraform crée. Notez cependant que vous disposez d'options pour 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 lors de l’utilisation en production.

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

    Apprenez-en davantage sur les différents types d'attributs liés au projet (y compris ce que ce guide appelle le « projet de vérification des quotas ») lors de l'utilisation de Terraform avec Firebase.

  3. Passez à la section suivante pour compléter votre fichier de configuration et spécifier quelle infrastructure créer.

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

Dans votre fichier de configuration Terraform (pour ce guide, votre fichier main.tf ), vous devez spécifier toute l'infrastructure que vous souhaitez que Terraform crée (c'est-à-dire toutes les ressources que vous souhaitez provisionner et tous les services que vous souhaitez activer). Dans ce guide, retrouvez une liste complète de toutes les ressources Firebase prenant en charge Terraform .

  1. Ouvrez votre fichier main.tf

  2. Sous la configuration provider , incluez la configuration suivante de blocs resource .

    Cet exemple de base crée un nouveau projet Firebase, puis crée une application Android Firebase au sein de 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 les 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 des informations détaillées sur ces commandes, consultez la documentation Terraform .

  1. Si c'est la première fois que vous exécutez des commandes Terraform dans le répertoire, vous devez initialiser le répertoire de configuration et installer le fournisseur Google Terraform. 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. Confirmez 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 suivante :

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



Ressources Firebase avec prise en charge de Terraform

Les ressources Firebase et Google suivantes prennent en charge Terraform. Et nous ajoutons constamment de nouvelles ressources ! Donc, si vous ne voyez pas la ressource que vous souhaitez gérer avec Terraform, revenez bientôt pour voir si elle est disponible ou demandez-la en déposant un problème dans le dépôt GitHub .


Gestion de projets et d'applications Firebase

  • google_firebase_project — active les services Firebase sur un projet Google Cloud existant

  • google_firebase_project_location : définissez l'emplacement des ressources Google Cloud par défaut du projet.

  • Applications Firebase


Authentification Firebase

  • google_identity_platform_config — activez Google Cloud Identity Platform (GCIP) (qui est le backend de l'authentification Firebase) et fournissez les paramètres d'authentification au niveau du projet

    • La configuration de l'authentification Firebase via Terraform nécessite l'activation de GCIP. Assurez-vous de consulter l' exemple de fichier .tf pour savoir comment configurer l'authentification Firebase .

    • Le projet dans lequel Terraform activera l'authentification GCIP et/ou Firebase doit figurer sur le plan tarifaire Blaze (c'est-à-dire que le projet doit avoir un compte de facturation Cloud associé). Vous pouvez le faire par programme en définissant l'attribut billing_account dans la ressource google_project .

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

  • google_identity_platform_default_supported_idp_config — configurez les fournisseurs d'identité fédérés courants, comme Google, Facebook ou Apple

  • identity_platform_oauth_idp_config — configurez des sources arbitraires du fournisseur d'identité OAuth (IdP)

  • google_identity_platform_inbound_saml_config — configurer les intégrations SAML

Pas encore pris en charge :

  • Configuration de l'authentification multifacteur (MFA) via Terraform

Base de données en temps réel Firebase

Pas encore pris en charge :

  • Déploiement des règles de sécurité de la base de données en temps réel Firebase via Terraform (découvrez comment déployer ces règles à l'aide d'autres outils, y compris des options de programmation)

Cloud Firestore

  • google_firestore_database — créer une instance Cloud Firestore

  • google_firestore_index — activez des requêtes efficaces pour Cloud Firestore

  • google_firestore_document : amorcez une instance Cloud Firestore avec un document spécifique dans une collection

    Important : n'utilisez pas de données réelles sur l'utilisateur final ou la production dans ce document de départ.


Stockage cloud pour Firebase


Règles de sécurité Firebase (pour Cloud Firestore et Cloud Storage)

Notez que Firebase Realtime Database utilise un système de provisionnement différent pour ses règles de sécurité Firebase.

  • google_firebaserules_ruleset : définissez les règles de sécurité Firebase 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 un bucket Cloud Storage


Extensions Firebase



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



Dépannage et FAQ