Google Cloud-Ressourcen in das Terraform-Format exportieren

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

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 einen String wie ComputeInstance, um bestimmte Ressourcentypen für Ihr Projekt im HCL-Codeformat zu exportieren:

gcloud beta resource-config bulk-export \
  --resource-types=RESOURCE_TYPE \
  --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