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
Erstellen Sie ein Verzeichnis mit dem Namen
tf-output
.cd && mkdir tf-output && cd tf-output
Erstellen Sie eine Datei mit dem Namen
types.txt
und fügen Sie eine Liste mit Ressourcentypen hinzu. Beispiel:ComputeBackendBucket ComputeBackendService ComputeForwardingRule
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.