Terraform-Konfiguration erstellen
Wenn Sie Service Catalog-Lösungen für Ihre Organisation auswählen, können Sie eine Terraform-Konfiguration oder config erstellen, die Ihre Nutzer mit Terraform bereitstellen. Nachdem Sie die Konfiguration erstellt haben, können Sie sie für Nutzer freigeben, indem Sie sie catalogs zuweisen.
In dieser Anleitung verwenden Sie Cloud Build, um Terraform -Befehle in der neuesten Version des Terraform-Docker-Images auszuführen. Mit Cloud Storage speichern und Verwalten Sie Terraform-Ressourcen wie Module und Statusdateien.
Ressourcen und Anleitungen zur Verwendung von Terraform finden Sie unter Terraform mit verwenden Google Cloud.
Hinweis
Sie benötigen die folgenden IAM-Rollen (Identity and Access Management):
- Katalogadministrator ODER Katalogverwaltung für die Google Cloud Organisation, die mit dem Google Cloud Projekt verknüpft ist, in dem Service Catalog aktiviert ist. Wenn Sie diese Rolle nicht haben, wenden Sie sich an einen Organisationsadministrator, um Zugriff anzufordern.
- Storage-Administrator für das Google Cloud Projekt, in dem Sie Ihre Lösung erstellen möchten. Wenn sich Ihre Terraform-Konfiguration in einem anderen Projekt befindet, benötigen Sie auch die Rolle „Storage-Administrator“ für das Projekt, das Ihre Terraform-Konfiguration enthält.
- Cloud Build-Bearbeiter für das Google Cloud Projekt, in dem Sie die Lösung erstellen möchten.
Wenn Sie ein eigenes Dienstkonto verwenden möchten, benötigen Sie auch die Rolle „Dienstkontonutzer“ für das Google Cloud Projekt, das das Dienstkonto enthält, das Sie verwenden möchten.
Wenn Sie diese Rollen nicht haben, wenden Sie sich an einen Organisationsadministrator, um Zugriff anzufordern.
Wenn Sie ein eigenes Dienstkonto verwenden möchten, muss Ihr Dienstkonto die folgenden IAM-Rollen haben:
- Storage-Administrator für das Google Cloud Projekt, in dem Sie Ihre Lösung erstellen möchten. Wenn sich Ihre Terraform-Konfiguration in einem anderen Projekt befindet, muss Ihr Dienstkonto auch die Rolle „Storage-Objekt-Betrachter“ für das Projekt haben, das die Terraform-Konfiguration enthält.
- Logs-Autor für das Google Cloud Projekt, in dem Sie Ihre Lösung erstellen möchten.
Wenn Sie diese Rollen nicht haben, wenden Sie sich an einen Organisationsadministrator, um Zugriff anzufordern.
Richten Sie Cloud Build in dem Projekt ein, in dem Sie die Konfiguration erstellen:
-
Aktivieren Sie die Cloud Build API.
Durch das Aktivieren der API wird automatisch ein Cloud Build-Dienstkonto erstellt, das Sie im folgenden Schritt verwenden.Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen. - Rufen Sie die Cloud Build Seite auf.
- Wählen Sie im linken Bereich die Einstellungen aus.
- Verwenden Sie das Dienstkonto, das im Abschnitt E‑Mail-Adresse des Dienstkontos angegeben ist.
- Wenn Sie kein eigenes Dienstkonto verwenden, weisen Sie dem Dienstkonto die folgenden IAM-Rollen zu. Eine Anleitung zum Zuweisen von
Rollen finden Sie unter
Zugriff für das Cloud Build-Dienstkonto konfigurieren.
- Projektbearbeiter
(
roles/editor) - Storage-Administrator
(
roles/storage.admin)
- Projektbearbeiter
(
-
Konfigurationsdateien in Cloud Storage hochladen
Sie verwenden Cloud Storage, um Ihre Terraform-Konfigurationsdateien für Service Catalog zu verwalten.
Cloud Storage-Bucket erstellen
Erstellen Sie zum Einrichten von Cloud Storage einen Bucket in demselben Projekt, in dem Sie Service Catalog für Ihre Organisation aktiviert haben:
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
- Klicken Sie auf Erstellen.
- Geben Sie auf der Seite Bucket erstellen die Bucket-Informationen ein. Klicken Sie auf Weiter, um mit dem nächsten
Schritt fortzufahren.
-
Führen Sie im Abschnitt Einstieg die folgenden Schritte aus:
- Geben Sie einen global eindeutigen Namen ein, der den Anforderungen für Bucket-Namen entspricht.
- So fügen Sie ein
Bucket-Label hinzu:
Maximieren Sie den Bereich Label (),
klicken Sie auf add_box
Label hinzufügen und geben Sie einen
keyund einenvaluefür das Label an.
-
Gehen Sie im Abschnitt Speicherort für Daten auswählen so vor:
- Wählen Sie einen Standorttyp aus.
- Wählen Sie im Drop-down-Menü Standorttyp einen Standort aus, an dem die Daten Ihres Buckets dauerhaft gespeichert werden sollen.
- Wenn Sie den Standorttyp Dual-Region auswählen, können Sie auch die Turboreplikation aktivieren, indem Sie das entsprechende Kästchen anklicken.
- Wenn Sie die Bucket-übergreifende Replikation einrichten möchten, wählen Sie
Bucket-übergreifende Replikation über Storage Transfer Service hinzufügen aus und
führen Sie die folgenden Schritte aus:
Bucket-übergreifende Replikation einrichten
- Wählen Sie im Menü Bucket einen Bucket aus.
Klicken Sie im Bereich Replikationseinstellungen auf Konfigurieren , um die Einstellungen für den Replikationsjob zu konfigurieren.
Der Bereich Bucket-übergreifende Replikation konfigurieren wird angezeigt.
- Wenn Sie die zu replizierenden Objekte nach dem Objektnamenspräfix filtern möchten, geben Sie ein Präfix ein, mit dem Sie Objekte ein- oder ausschließen möchten, und klicken Sie dann auf Präfix hinzufügen.
- Wenn Sie eine Speicherklasse für die replizierten Objekte festlegen möchten, wählen Sie im Menü Speicherklasse eine Speicherklasse aus. Wenn Sie diesen Schritt überspringen, wird für replizierte Objekte standardmäßig die Speicherklasse des Ziel-Buckets verwendet.
- Klicken Sie auf Fertig.
-
Gehen Sie im Abschnitt Speicherort für Daten auswählen so vor:
- Wählen Sie eine Standardspeicherklasse für den Bucket oder Autoclass für die automatische Speicherklassenverwaltung der Daten Ihres Buckets aus.
- Wenn Sie den hierarchischen Namespace aktivieren möchten, wählen Sie im Bereich Speicher für datenintensive Arbeitslasten optimieren die Option Hierarchischen Namespace für diesen Bucket aktivieren aus.
- Im Abschnitt Zugriff auf Objekte steuern wählen Sie aus, ob der Bucket Verhinderung des öffentlichen Zugriffs durchsetzt, und wählen Sie eine Methode für die Zugriffssteuerung für die Objekte Ihres Buckets.
-
Gehen Sie im Bereich Auswählen, wie Objektdaten geschützt werden so vor:
- Wählen Sie eine der Optionen unter Datenschutz aus, die Sie
für Ihren Bucket festlegen möchten.
- Wenn Sie das vorläufige Löschen aktivieren möchten, klicken Sie das Kästchen Richtlinie für vorläufiges Löschen (zur Datenwiederherstellung) an, und geben Sie die Anzahl der Tage an, die Objekte nach dem Löschen aufbewahrt werden sollen.
- Wenn Sie die Objektversionsverwaltung festlegen möchten, klicken Sie das Kästchen Objektversionierung (zur Versionsverwaltung) an und geben Sie die maximale Anzahl von Versionen pro Objekt und die Anzahl der Tage an, nach denen die nicht aktuellen Versionen ablaufen.
- Wenn Sie die Aufbewahrungsrichtlinie für Objekte und Buckets aktivieren möchten, klicken Sie das Kästchen Aufbewahrung (zur Compliance) an und führen Sie dann die folgenden Schritte aus:
- Wenn Sie die Objektaufbewahrungssperre aktivieren möchten, klicken Sie das Kästchen Objektaufbewahrung aktivieren an.
- Wenn Sie die Bucket-Sperre aktivieren möchten, klicken Sie das Kästchen Aufbewahrungsrichtlinie für Bucket festlegen an und wählen Sie eine Zeiteinheit und eine Zeitdauer für die Aufbewahrungsdauer aus.
- Wenn Sie auswählen möchten, wie Ihre Objektdaten verschlüsselt werden, maximieren Sie den Datenverschlüsselung-Bereich () und wählen Sie eine Datenverschlüsselung-Methode aus.
- Wählen Sie eine der Optionen unter Datenschutz aus, die Sie
für Ihren Bucket festlegen möchten.
-
Führen Sie im Abschnitt Einstieg die folgenden Schritte aus:
- Klicken Sie auf Erstellen.
Objektversionierung aktivieren
Sie müssen die Objektversionsverwaltung für Ihren Bucket verwenden, um Ihre Terraform-Konfiguration vor dem Löschen oder Überschreiben zu schützen. Informationen zum Aktivieren der Objektversionsverwaltung finden Sie in der Cloud Storage-Dokumentation unter Objektversionsverwaltung verwenden.
Zugriff auf Ihren Bucket gewähren
Wenn Nutzer in Ihrer Organisation die Konfiguration bereitstellen, muss ihr Cloud Build-Dienstkonto Lesezugriff auf Ihren Bucket haben. Wenn Ihr Bucket in demselben Google Cloud Projekt gespeichert ist, in dem Nutzer die Konfiguration bereitstellen, hat das Dienstkonto bereits Zugriff.
Wenn Ihre Nutzer die Konfiguration in einem anderen Google Cloud Projekt bereitstellen, gewähren Sie den Zugriff auf den Bucket mit einer der folgenden Methoden:
Weisen Sie den Cloud Build-Dienstkonten Ihrer Nutzer die Rolle „Storage-Objekt-Betrachter (
roles/storage.objectViewer)“ zu oder weisen Sie diese einer Google Cloud Ressource zu, in der Ihre Nutzer Terraform-Konfigurationen bereitstellen, z. B. ein Projekt, einen Ordner oder eine Organisation.Verwenden Sie eine Access Control List (ACL), um den Zugriff auf den Bucket zu verwalten.
Weitere Informationen zum Verwalten des Zugriffs auf Buckets finden Sie in der Übersicht über die Zugriffssteuerung von Cloud Storage.
Terraform-Modul erstellen und hochladen
Nachdem Sie den Cloud Storage-Bucket eingerichtet haben, müssen Sie ein Terraform-Modul erstellen und hochladen, das ein Container aller Ihrer Konfigurationsdateien ist. Service Catalog verwendet das Modul, um automatisch eine JSON-Schemadatei zu generieren, mit der die Variablen Ihrer Konfiguration definiert werden.
Wenn Sie Module außerhalb des aktuellen Verzeichnisses aufrufen, verwenden Sie den Remote-Pfad anstelle eines relativen Pfads. Verwenden Sie beispielsweise anstelle von
source = "../../" die Option source = "GoogleCloudPlatform/cloud-run/google".
Module für gängige Google Cloud Anwendungsfälle finden Sie unter Terraform-Blueprints und -Module für Google Cloud.
Das folgende Codebeispiel zeigt die Terraform-Konfigurationsdatei main.tf:
variable "machine_type" {
type = string
default = "n1-standard-1"
}
variable "zone" {
type = string
default = "us-central1-a"
}
variable "deployment_identifier" {
description = "The unique name for your instance"
type = string
}
resource "google_compute_instance" "default" {
name = "vm-${var.deployment_identifier}"
machine_type = var.machine_type
zone = var.zone
boot_disk {
device_name = "boot"
auto_delete = true
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral IP
}
}
}
Komprimieren Sie die Dateien nach dem Erstellen des Moduls in einer ZIP-Datei. Das Modul muss im Stammverzeichnis der ZIP-Datei gespeichert sein.
Führen Sie den folgenden Befehl aus, um eine ordnungsgemäße Speicherung des Moduls zu gewährleisten, wenn Sie Ihre Terraform-Dateien zippen:
none
zip solution.zip file1.tf file2.tf file3.tf
Laden Sie dann die ZIP-Datei in Ihren Bucket hoch. Eine Anleitung zum Hochladen der ZIP-Datei finden Sie in der Cloud Storage-Dokumentation unter Objekte hochladen.
Konfiguration in Service Catalog erstellen
Nachdem Sie einen Cloud Storage-Bucket mit Ihrem Terraform-Modul eingerichtet haben, erstellen Sie eine Service Catalog-Lösung, die den Bucket enthält.
So erstellen Sie die Terraform-Konfiguration als Service Catalog-Lösung:
Wechseln Sie in der Google Cloud Console zur Admin-Seite Lösungen für Service Catalog.
Zur Seite „Lösungen“Klicken Sie auf Auswählen, um das Google Cloud Projekt auszuwählen.
Klicken Sie auf Lösung erstellen. Wählen Sie aus der Drop-down-Liste Terraform-Konfiguration erstellen aus.
Geben Sie einen Namen, eine Beschreibung und eine Kurzbeschreibung ein. Die Kurzinfo ist eine kurze Beschreibung einer Lösung, die Nutzer beim Suchen in Service Catalog sehen.
Geben Sie im Feld Link zu Terraform-Konfiguration den Link zum Cloud Storage-Bucket an, der die ZIP-Datei für das Terraform-Modul enthält, z. B.
gs://my-terraform-bucket/my-zip-file.zip.Optional können Sie ein Symbol für die Lösung hochladen. Die empfohlenen Abmessungen für ein Symbol sind 80 x 80 Pixel.
Geben Sie optional einen Supportlink und Kontaktdaten für den Ersteller ein.
Fügen Sie optional einen Link zur Dokumentation für die Lösung hinzu.
Wählen Sie die Terraform-Version aus, die Sie zum Bereitstellen der Lösung verwenden möchten.
Optional können Sie ein eigenes Dienstkonto angeben, indem Sie das Kästchen neben Eigenes Dienstkonto auswählen oder eingeben anklicken. Wenn sich Ihr Dienstkonto in demselben Google Cloud Projekt befindet, in dem Sie Ihre Lösung erstellen, wählen Sie Dienstkonto aus dem aktuellen Projekt auswählen aus und wählen Sie Ihr Dienstkonto aus dem Drop-down-Menü aus. Wenn sich Ihr Dienstkonto in einem anderen Google Cloud Projekt als Ihre Lösung befindet, wählen Sie E‑Mail-Adresse eines Dienstkontos aus einem beliebigen Projekt eingeben aus und geben Sie die E‑Mail-Adresse Ihres Dienstkontos ein.
Klicken Sie auf ERSTELLEN.
Die Lösung wird erstellt und wird auf der Admin-Seite Service Catalog-Lösungen angezeigt.
Der folgende Screenshot zeigt, wie eine Terraform-Konfiguration erstellt wird:
Nächste Schritte
- Weisen Sie die Terraform-Konfiguration einem Katalog zu, damit Nutzer in Ihrer Organisation auf die Lösung zugreifen und sie bereitstellen können.
- Aktualisieren Sie eine Lösung mit den neuesten Details zur Terraform-Konfiguration.