Exporter vos ressources Google Cloud dans le format Terraform

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Vous avez déployé des ressources dans Google Cloud et devez désormais gérer votre Infrastructure as code (IaC) avec Terraform. Google fournit un outil permettant de générer du code Terraform pour les ressources d'un projet, d'un dossier ou d'une organisation.

Avant de commencer

Installez l'interface de ligne de commande (CLI) pour Config Connector.

gcloud components install config-connector

Config Connector vous permet d'utiliser l'outil d'exportation groupée Terraform de Google Cloud.

Exporter la configuration complète du projet vers le code HCL Terraform

La commande gcloud beta resource-config bulk-export --resource-format=terraform exporte les ressources actuellement configurées dans le projet, le dossier ou l'organisation et les affiche à l'écran au format de code HCL.

gcloud beta resource-config bulk-export \
  --project=PROJECT_ID \
  --resource-format=terraform

Écrire la sortie dans une structure de répertoires

Générez la configuration complète du projet vers un chemin d'accès :

gcloud beta resource-config bulk-export \
  --path=OUTPUT_DIRECTORY_NAME \
  --project=PROJECT_ID \
  --resource-format=terraform

L'option --path spécifie l'emplacement de sortie du code HCL. Si le chemin d'accès OUTPUT_DIRECTORY_NAME n'existe pas, une invite vous demande si vous souhaitez le créer.

Après avoir exécuté la commande, le code HCL de chaque ressource est généré dans un fichier .tf distinct dans la structure de répertoires suivante :

OUTPUT_DIRECTORY_NAME/projects/PROJECT_ID/RESOURCE_TYPE

Écrire la sortie dans un seul fichier

Si vous ne souhaitez pas afficher le résultat à l'écran ni créer de fichiers .tf distincts, vous pouvez écrire l'intégralité de la sortie dans un seul fichier, comme indiqué dans cet exemple :

gcloud beta resource-config bulk-export --resource-format=terraform >> gcp_resources.tf

Filtrer la sortie

Filtrez le résultat de la commande d'exportation groupée en spécifiant les types de ressources.

Lister les types de ressources compatibles avec le filtrage

Pour obtenir la liste des types de ressources compatibles, exécutez la commande gcloud beta resource-config list-resource-types :

gcloud beta resource-config list-resource-types

Vous pouvez éventuellement écrire le résultat dans un fichier :

gcloud beta resource-config list-resource-types >> strings.txt

Dans le résultat, le type de ressource des VM Compute Engine est listé comme suit :

KRM KIND: ComputeInstance

Vous pouvez ignorer le préfixe KRM KIND:.

Exporter un seul type de ressource

Utilisez une chaîne, telle que ComputeInstance, pour exporter des types de ressources spécifiques pour votre projet au format de code HCL :

gcloud beta resource-config bulk-export \
  --resource-types=RESOURCE_TYPE \
  --project=PROJECT_ID \
  --resource-format=terraform

L'option --resource-types spécifie le type de ressource en sortie.

Exporter plusieurs types de ressources

Exportez les instances de VM et les règles de pare-feu au format de code HCL :

gcloud beta resource-config bulk-export \
  --resource-types=ComputeFirewall,ComputeInstance \
  --project=PROJECT_ID \
  --resource-format=terraform

Utiliser un fichier pour spécifier les types de ressources à exporter

  1. Créez un répertoire appelé tf-output.

    cd && mkdir tf-output && cd tf-output
    
  2. Créez un fichier appelé types.txt et ajoutez une liste de types de ressources. Exemple :

    ComputeBackendBucket
    ComputeBackendService
    ComputeForwardingRule
    
  3. Exécutez la commande gcloud beta resource-config bulk-export avec l'option --resource-types-file :

    gcloud beta resource-config bulk-export \
     --resource-types-file=types.txt \
     --path=tf-output \
     --project=PROJECT_ID \
     --resource-format=terraform
    

Si le projet ne contient aucun type de ressource particulier, la commande aboutit, mais aucun résultat n'est généré pour ce type de ressource.

Étapes suivantes