Google Cloud-Ressourcen in das Terraform-Format exportieren

Sie haben Ressourcen in Google Cloud bereitgestellt und müssen nun Ihre Infrastruktur als Code (IaC) mit Terraform verwalten. Google stellt ein Tool bereit, mit dem Sie Terraform-Code für Ressourcen in einem Projekt, Ordner oder einer Organisation generieren können.

Vorbereitung

Installieren Sie die Befehlszeile für Config Connector.

gcloud components install config-connector

Mit Config Connector können Sie das Bulk-Exporttool Terraform von Google Cloud verwenden.

Exportieren Sie die gesamte Projektkonfiguration in den Terraform-HCL-Code

Der Befehl gcloud beta resource-config bulk-export --resource-format=terraform exportiert Ressourcen, die derzeit im Projekt, im Ordner oder in der Organisation konfiguriert sind, und gibt sie im HCL-Codeformat auf dem Bildschirm aus.

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

Ausgabe in eine Verzeichnisstruktur schreiben

Geben Sie die gesamte Konfiguration des Projekts in einen Pfad aus:

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

Das Flag --path gibt den Speicherort für den HCL-Code an. Wenn der Pfad OUTPUT_DIRECTORY_NAME nicht vorhanden ist, werden Sie in einer Eingabeaufforderung gefragt, ob Sie ihn erstellen möchten.

Nach der Ausführung des Befehls wird der HCL-Code für jede Ressource in eine separate .tf-Datei in der folgenden Verzeichnisstruktur ausgegeben:

OUTPUT_DIRECTORY_NAME/projects/PROJECT_ID/RESOURCE_TYPE

Ausgabe in eine einzelne Datei schreiben

Wenn Sie die Ausgabe nicht auf dem Bildschirm drucken oder separate .tf-Dateien erstellen möchten, können Sie die gesamte Ausgabe in eine einzelne Datei schreiben, wie in diesem Beispiel gezeigt:

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

Ausgabe filtern

Filtern Sie die Ausgabe des Bulk-Exportbefehls, indem Sie Ressourcentypen angeben.

Unterstützte Ressourcentypen auflisten, nach denen gefiltert werden soll

Führen Sie den Befehl gcloud beta resource-config list-resource-types aus, um eine Liste der unterstützten Ressourcentypen aufzurufen:

gcloud beta resource-config list-resource-types

Optional können Sie die Ausgabe in eine Datei schreiben:

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

In der Ausgabe wird der Ressourcentyp für Compute Engine-VMs so aufgeführt:

KRM KIND: ComputeInstance

Sie können das Präfix KRM KIND: ignorieren.

Einzelnen Ressourcentyp exportieren

Verwenden Sie den im vorherigen Befehl gezeigten String ComputeInstance, um nur die Compute Engine-VM-Instanzen für Ihr Projekt im HCL-Codeformat zu exportieren:

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

Das Flag --resource-types gibt den Ressourcentyp an, der ausgegeben werden soll.

Mehrere Ressourcentypen exportieren

Exportieren Sie VM-Instanzen und Firewallregeln im HCL-Codeformat:

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

Datei zum Angeben der zu exportierenden Ressourcentypen verwenden

  1. Erstellen Sie ein Verzeichnis mit dem Namen tf-output.

    cd && mkdir tf-output && cd tf-output
    
  2. Erstellen Sie eine Datei mit dem Namen types.txt und fügen Sie eine Liste mit Ressourcentypen hinzu. Beispiel:

    ComputeBackendBucket
    ComputeBackendService
    ComputeForwardingRule
    
  3. Führen Sie den Befehl gcloud beta resource-config bulk-export mit dem Flag --resource-types-file aus.

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

Wenn das Projekt keinen bestimmten Ressourcentyp enthält, ist der Befehl erfolgreich, aber für diesen Ressourcentyp wird nichts ausgegeben.

Weitere Informationen