Importer vos ressources Google Cloud dans l'état Terraform

Terraform peut importer l'infrastructure existante. Cela vous permet de récupérer les ressources que vous avez créées par d'autres moyens et de les gérer sous Terraform. Google fournit un outil permettant d'importer vos ressources Google Cloud dans l'état Terraform afin de pouvoir gérer votre déploiement dans Terraform.

Vous pouvez importer l'état 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'importation Terraform de Google Cloud.

Générer du code Terraform pour vos ressources

Exécutez la commande gcloud beta resource-config bulk-export pour sortir la configuration complète du projet dans le chemin d'accès, entire-tf-output :

gcloud beta resource-config bulk-export \
  --path=entire-tf-output \
  --project=PROJECT_ID \
  --resource-format=terraform

Créer des modules Terraform à partir du code généré

Exécutez la commande gcloud beta resource-config terraform generate-import en pointant vers le contenu du répertoire de sortie :

gcloud beta resource-config terraform generate-import entire-tf-output

Cette commande génère les modules Terraform et un script d'importation :

  • Le fichier gcloud-export-modules.tf. Ce fichier pointe vers tous les modules des sous-ressources. Le contenu de ce fichier se présente comme suit :

    provider "google" {
    project = "PROJECT_ID"
    }
    
    module "entire-tf-output-projects-PROJECT_ID-ComputeFirewall" {
    source = "./entire-tf-output/projects/PROJECT_ID/ComputeFirewall"
    }
    
    module "entire-tf-output-projects-PROJECT_ID-ComputeBackendService-global" {
    source = "./entire-tf-output/projects/PROJECT_ID/ComputeBackendService/global"
    }
    
    ...and so on
    
  • Un script shell exécutable portant un nom du type terraform_import_20220331-19-12-33.sh. Le script shell contient une liste de commandes terraform import :

    #!/bin/sh
    # Terraform Import Script generated by gcloud cli
    
    terraform import module.entire-tf-output-projects-PROJECT_ID-ComputeFirewall.google_compute_firewall.allow_ssh projects/PROJECT_ID/global/firewalls/allow-ssh
    
    ...and so on
    

    Les commandes terraform import permettent d'importer les modules créés par la commande generate-import dans l'état Terraform.

Importer les modules dans l'état Terraform

  1. Initialisez-le :

    terraform init
    
  2. Exécutez le script :

    ./terraform_import_20220331-19-12-33.sh
    

    Sortie :

    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Importing from ID
    "projects/PROJECT_ID/zones/us-central1-a/instances/instance-1"...
    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Import prepared!
     Prepared google_compute_instance for import
    module.examples-projects-PROJECT_ID-ComputeInstance-us-central1-a.google_compute_instance.instance_1:
    Refreshing state...
    [id=projects/PROJECT_ID/zones/us-central1-a/instances/instance-1]
    
    Import successful!
    
    The resources that were imported are shown above. These resources are now in
    your Terraform state and will henceforth be managed by Terraform.
    

Étapes suivantes