VM-Image für die Terraform-Bereitstellung konfigurieren

In diesem Artikel wird beschrieben, wie Sie die Konfiguration Ihres VM-Images mit Terraform abschließen und es zur Bereitstellung einreichen.

Festlegen, wie Ihr Bereitstellungspaket erstellt wird

Wir empfehlen, die Option „Gediente Konfiguration“ von Producer Portal zu verwenden, um Ihr Bereitstellungspaket direkt in der Google Cloud Console zu erstellen.

Die interaktive Konfiguration unterstützt einfache VM-Produkte, z. B. einzelne VM-Bereitstellungen mit grundlegenden Firewallregeln, aber unterstützt keine komplexen Funktionen wie Bereitstellungen mit mehreren VMs und nicht-Rechenressourcen. Wenn Sie Funktionen benötigen, die von der geführten Konfiguration nicht unterstützt werden, können Sie die Option „Manuelle Konfiguration“ verwenden, um entweder Ihr Bereitstellungspaket zu erstellen oder ein vorhandenes Paket anzupassen, indem Sie zusätzliche Funktionen hinzufügen.

Zwischen geführter und manueller Konfiguration wechseln

Wenn Sie die Option der geführten Konfiguration von Producer Portal verwenden und später zum manuellen Konfigurieren Ihres Bereitstellungspakets wechseln möchten, klicken Sie auf Zur manuellen Konfiguration.

Geführte Konfiguration abschließen

So konfigurieren Sie ein einfaches Bereitstellungspaket mit der Google Cloud Console fertig und reichen es ein:

  1. Rufe im Producer Portal den Bereich Bereitstellungspaket auf.

  2. Klicken Sie unter Terraform-Konfiguration neben dem Eingabefeld Cloud Storage-Bucket auf Durchsuchen.

    Wenn Sie bereits einen Cloud Storage-Bucket erstellt haben, wählen Sie ihn hier aus.

    Wenn Sie keinen Cloud Storage-Bucket haben, klicken Sie auf das Symbol Neuen Bucket erstellen. Wenn Sie einen neuen Bucket erstellen, geschieht Folgendes:

    • Sie wählen einen Namen für den Bucket aus.

    • Sie geben an, in welchen Regionen die Daten im Bucket gespeichert werden.

    • Sie geben die Speicherklasse für Ihre Daten an.

    • Sie legen fest, welcher Detaillierungsgrad auf die IAM-Berechtigungen (Identity and Access Management) für die Daten des Buckets angewendet wird.

    • Sie konfigurieren optionale erweiterte Einstellungen wie Verschlüsselungs- oder Datenaufbewahrungsrichtlinien.

  3. Achten Sie darauf, dass die Objektversionsverwaltung für Ihren Cloud Storage-Bucket aktiviert ist.

  4. Klicken Sie auf Konfigurieren, um Ihre Bucket-Einstellungen zu speichern und mit der Konfiguration Ihres Bereitstellungspakets fortzufahren.

  5. Unter Maschinentyp auswählen müssen Sie Folgendes angeben: Standardzone, Mindestmaschinentyp und Standardmaschinentyp für Ihr VM-Produkt zusammen mit der Größe und dem Typ des Bootlaufwerks.

  6. Geben Sie unter Betriebssystem angeben den Namen und die Version des Betriebssystems an, das Ihr VM-Image verwendet, sowie die Versionsnummer des VM-Images.

  7. Optional können Sie unter VM-Zugriff einrichten Website- und Administrator-URLs sowie einen Nutzernamen und ein Passwort angeben, mit denen Nutzer nach der Bereitstellung auf die VM zugreifen können.

  8. Optional können Sie unter Netzwerk konfigurieren Einstellungen für die IP-Weiterleitung angeben und Firewallregeln konfigurieren.

  9. Optional können Sie unter Nächste Schritte definieren eine Anleitung für die Nutzer Ihres Produkts angeben, um sie durch den Einstieg in Ihr Produkt zu führen. Diese Anleitung ist für sie sichtbar, nachdem sie Ihr Produkt bereitgestellt haben.

  10. Nachdem Sie die vorherigen Schritte ausgeführt haben, klicken Sie auf Erstellen, um Ihr Bereitstellungspaket zu erstellen.

    Wenn Sie später weitere Änderungen an Ihrem Bereitstellungspaket vornehmen müssen, können Sie auf Bearbeiten klicken, um Änderungen vorzunehmen, und dann auf Generieren, um das Bereitstellungspaket neu zu generieren.

  11. Validiere das Bereitstellungspaket im Producer Portal.

  12. Nachdem die Validierung Ihres Bereitstellungspakets im Cloud Marketplace abgeschlossen ist, klicken Sie auf Veröffentlichen, um mit dem Testen des Bereitstellungspakets zu beginnen.

Manuelle Konfiguration abschließen

In diesem Abschnitt wird erläutert, wie Sie mit der manuellen Konfigurationsoption ein Bereitstellungspaket erstellen und das Paket zur Überprüfung einreichen.

Angeben, ob das Standard- oder ein benutzerdefiniertes Terraform-Modul verwendet werden soll

Sie können festlegen, ob Ihre Kunden beim Bereitstellen Ihres Produkts das Standard- oder ein benutzerdefiniertes Terraform-Modul verwenden sollen.

Wenn Sie das Standard-Terraform-Modul verwenden, stellt Google Cloud Ihren Kunden automatisch generierten Terraform-Code zur Verfügung, mit dem sie Ihr Produkt bereitstellen können.

Wenn Sie ein benutzerdefiniertes Terraform-Modul verwenden, müssen Sie Ihrem Kunden Ihre eigenen Terraform-Vorlagen zur Verfügung stellen. Sie können diese Vorlagen in einem Format bereitstellen, das Kunden über die Befehlszeile bereitstellen können, oder mit zusätzlichen Metadaten, mit denen Kunden Module direkt über den Cloud Marketplace bereitstellen können.

So legen Sie fest, ob Ihre Kunden das Standard- oder ein benutzerdefiniertes Terraform-Modul verwenden sollen und wie das Modul bei benutzerdefinierten Terraform-Modulen bereitgestellt werden soll:

  1. Rufe in Producer Portal den Bereich Bereitstellungspaket auf.

  2. Wählen Sie unter Terraform-Konfiguration unter Typ die Option Standard, Benutzerdefiniert (Bereitstellung über die Befehlszeile) oder Benutzerdefiniert (Bereitstellung über die Benutzeroberfläche) aus.

Anforderungen an benutzerdefinierte Terraform-Module

Wenn Sie benutzerdefinierte Terraform-Module verwenden, müssen diese die folgenden Anforderungen erfüllen:

  • Ihr benutzerdefiniertes Modul muss ein Modul enthalten, mit dem der Cloud Marketplace prüfen kann, ob es die Anforderungen erfüllt. Weitere Informationen finden Sie unter Prüfen, ob Ihr Modul die Überprüfung besteht.

  • Ihr Modul muss eine Variable namens project_id haben, in der die Projekt-ID gespeichert wird, die Ihre Kunden zum Bereitstellen des Moduls verwenden.

  • Sie müssen Verweise auf die Namen Ihrer Images als Terraform-Variablen im Format projects/PROJECT_NAME/global/images/IMAGE_NAME angeben. Der Wert von default muss auf den Namen Ihres VM-Images festgelegt sein, damit die im Cloud Marketplace befindliche Kopie des Images beim Veröffentlichen Ihres VM-Produkts in das Modul eingefügt werden kann.

  • Ihr Modul darf nicht von externen Modulen abhängen, die nicht mit ihm gepackt sind.

  • Für Ihr Modul dürfen nur die folgenden genehmigten Anbieter verwendet werden:

    • archive
    • cloud-init
    • dns
    • google
    • google-beta
    • http
    • null
    • random
    • time
    • tls

Ein Beispiel für ein benutzerdefiniertes Modul, das diesen Anforderungen entspricht, finden Sie im Beispiel für ein benutzerdefiniertes Terraform-Modul.

Zusätzliche Anforderungen für benutzerdefinierte Terraform-Module für die Bereitstellung der Benutzeroberfläche

Wenn Ihr benutzerdefiniertes Modul die Bereitstellung der Benutzeroberfläche unterstützt, muss es die folgenden zusätzlichen Anforderungen erfüllen:

  • Ihr Modul muss eine Variable namens goog_cm_deployment_name enthalten. Im Cloud Marketplace wird diese Variable verwendet, um die Bereitstellungen Ihrer Kunden auf der Bereitstellungsseite zu benennen. Sie sollten diese Variable verwenden, um Namenskollisionen bei Ressourcen zwischen mehreren Bereitstellungen in einem Projekt zu vermeiden. Ein Beispiel finden Sie unter goog_cm_deployment_name im Beispiel für ein benutzerdefiniertes Terraform-Modul.

  • In der Datei metadata.display.yaml müssen Sie ET_GCE_DISK_IMAGE als xGoogleProperty-Typ für alle Bildvariablen angeben. Ein Beispiel finden Sie unter metadata.display.yaml im Beispiel für ein benutzerdefiniertes Terraform-Modul.

  • Wenn Ihr Produkt VM-Images mit mehreren VMs oder Images enthält, die mehrere CPU-Architekturen unterstützen, müssen Sie enumValueLabels hinzufügen, damit Ihre Kunden das gewünschte VM-Image auswählen können. Ein Beispiel finden Sie im Beispiel für ein benutzerdefiniertes Terraform-Modul.

  • Ihr Modul darf nicht von der Unterstützung für Terraform-Bereitsteller abhängen.

Zusätzliche Schritte für benutzerdefinierte Terraform-Module

Wenn Sie benutzerdefinierte Terraform-Module verwenden möchten, müssen Sie die folgenden zusätzlichen Schritte ausführen, um Ihr VM-Image für die Bereitstellung zu konfigurieren:

  1. Rufe im Producer Portal den Bereich Bereitstellungspaket auf.

  2. Klicken Sie unter Terraform-Konfiguration unter Image-Variablen auf Variable hinzufügen.

    Wenn Sie die Terraform-Bereitstellung Ihres Produkts aktivieren möchten, müssen Sie die Verwendung von Marketplace-Images aktiviert haben. Der Cloud Marketplace verwendet die hier hinzugefügte Variable, um die Marketplace-Version Ihres VM-Images einzutauschen, wenn ein Kunde Ihr Produkt bereitstellt.

  3. Geben Sie im Textfeld Bildvariable einen Namen für die Variable ein, z. B. „image“.

  4. Legen Sie in Ihrem benutzerdefinierten Terraform-Modul den Standardwert der Variablen, die Sie im vorherigen Schritt erstellt haben, auf den Namen des VM-Images für Ihr Produkt im Format projects/YOUR_PROJECT/global/images/YOUR_IMAGE fest.

  5. Klicken Sie unter Speicherort des GCS-Objekts angeben auf Durchsuchen.

    Wenn Sie bereits einen Cloud Storage-Bucket erstellt haben, wählen Sie ihn hier aus.

    Wenn Sie keinen Cloud Storage-Bucket haben, klicken Sie auf das Symbol Neuen Bucket erstellen. Wenn Sie einen neuen Bucket erstellen, geschieht Folgendes:

    • Sie wählen einen Namen für den Bucket aus.

    • Sie geben an, in welchen Regionen die Daten im Bucket gespeichert werden.

    • Sie geben die Speicherklasse für Ihre Daten an.

    • Sie legen fest, welcher Detaillierungsgrad auf die IAM-Berechtigungen (Identity and Access Management) für die Daten des Buckets angewendet wird.

    • Sie konfigurieren optionale erweiterte Einstellungen wie Verschlüsselungs- oder Datenaufbewahrungsrichtlinien.

  6. Achten Sie darauf, dass die Objektversionsverwaltung für Ihren Cloud Storage-Bucket aktiviert ist.

  7. Klicken Sie auf Konfigurieren, um Ihre Bucket-Einstellungen zu speichern und mit der Konfiguration Ihres Bereitstellungspakets fortzufahren.

  8. Geben Sie unter Erforderliche Rollen die IAM-Rollen an, die Ihre Kunden zum Bereitstellen Ihres Produkts benötigen.

(Nur Bereitstellung über die Benutzeroberfläche) Metadaten für das benutzerdefinierte Terraform-Modul erstellen

Damit Ihr benutzerdefiniertes Modul die Bereitstellung der Benutzeroberfläche unterstützt, müssen Sie Metadaten erstellen und hinzufügen, die der Cloud Marketplace verwendet, um Ihr Modul korrekt zu parsen und in der Benutzeroberfläche für Ihren Kunden zu rendern.

Sie können diese Metadaten mit dem Open-Source-Tool CFT CLI erstellen und hinzufügen. So erstellen Sie mit CFT Metadaten für Ihre benutzerdefinierten Module und fügen sie hinzu:

  1. Installieren Sie das CFT-Befehlszeilentool. Weitere Informationen finden Sie in der CFT-CLI-Dokumentation. Wir empfehlen, den Wert für VERSION auf latest festzulegen und PLATFORM auf einen der folgenden Werte:

    • linux

    • windows

    • darwin

  2. Führen Sie dazu diesen Befehl aus:

     cft blueprint metadata -p TF_PACKAGE_PATH -q -d --nested=false
    

    Im vorherigen Befehl gibt das Flag -p einen Pfad für das Terraform-Paket an, das Flag -q generiert Metadaten ohne Informationen für ein Remote-Repository, das Flag -d generiert die Datei metadata.display.yaml und das Flag --nested=false generiert Metadaten für das Stammmodul, wobei alle Module im Ordner modules/ übersprungen werden.

Nachdem Sie die vorherigen Schritte ausgeführt haben, generiert das CFT-Befehlszeilentool zwei neue Dateien: metadata.yaml und metadata.display.yaml.

Metadaten des benutzerdefinierten Terraform-Moduls anpassen

Im Cloud Marketplace wird die Datei metadata.display.yaml verwendet, um das Formular anzupassen, mit dem Kunden Ihr Produkt über die Benutzeroberfläche bereitstellen. Wenn Sie dieses Formular anpassen möchten, können Sie nach dem Erstellen der Metadaten die Werte der Felder in metadata.display.yaml ändern. Details zu den verfügbaren Anpassungsoptionen finden Sie in der BlueprintUI-Dokumentation oder im BlueprintUI-Schema.

Wir empfehlen, die Erweiterung GooglePropertyExtensions zu verwenden, um die Metadaten zu ändern. Mit GooglePropertyExtensions können Sie Google Cloud-spezifische Validierungen verwenden, z. B. die Erzwingung, dass Kunden nur VPC-Netzwerke (Virtual Private Cloud) auswählen können, die bereits in ihrem Projekt vorhanden sind. Ein Beispiel finden Sie im Beispiel für ein benutzerdefiniertes Terraform-Modul.

Metadaten des benutzerdefinierten Moduls validieren

Führen Sie den folgenden Befehl aus, um die Metadaten Ihres benutzerdefinierten Moduls zu validieren:

cft blueprint metadata -p TF_PACKAGE_PATH -v

Im vorherigen Befehl gibt das Flag -p einen Pfad für das Terraform-Paket an und das Flag -v validiert alle Metadatendateien unter dem angegebenen Pfad basierend auf dem BlueprintMetadata-Schema.

Prüfen, ob Ihr Modul die Überprüfung besteht

Ihr benutzerdefiniertes Modul besteht die Prüfung, wenn der folgende Befehl erfolgreich ausgeführt wird:

terraform plan -var project_id=YOUR_PROJECT -var-file marketplace_test.tfvars

Im vorherigen Befehl ist marketplace_test.tfvars eine Terraform-Variablendatei, die nur vom Cloud Marketplace verwendet wird, und zwar ausschließlich für diese Überprüfung des Moduls. Wenn in Ihrer Vorlage Variablen deklariert sind, die keinen Standardwert haben, und Sie keinen Wert für diese Variablen festlegen, wird der Befehl nicht erfolgreich ausgeführt. Damit der Befehl erfolgreich ausgeführt wird, können Sie eine marketplace_test.tfvars-Datei erstellen, um Werte für die in der Vorlage deklarierten Variablen festzulegen. Eine Beispieldatei vom Typ marketplace_test.tfvars finden Sie im Beispiel für ein benutzerdefiniertes Terraform-Modul.

Optional (nur Bereitstellung über die Befehlszeile): Testmodul einschließen

Wenn Ihr benutzerdefiniertes Modul die Bereitstellung über die Befehlszeile unterstützt, können Sie optional einen Ordner mit dem Namen examples/marketplace_test hinzufügen. Das kann beispielsweise der Fall sein, wenn Ihr Produkt ein separates Testmodul zur Überprüfung der Funktionen enthalten muss. Wenn Sie diesen Ordner einschließen, muss der folgende Befehl erfolgreich ausgeführt werden, damit Ihr Modul die Überprüfung besteht:

terraform -chdir=examples/marketplace_test plan -var project_id=YOUR_PROJECT

Bereitstellung validieren und testen

Nachdem Sie Ihr Bereitstellungspaket erstellt und konfiguriert haben, müssen Sie es validieren und testen, bevor das Cloud Marketplace-Team es prüfen und genehmigen kann.

  1. Rufe in Producer Portal den Bereich Bereitstellungspaket auf.

  2. Klicke auf Validieren. Die Validierung kann bis zu zwei Stunden dauern. Sie können den Bildschirm während der Verarbeitung verlassen.

  3. Klicken Sie nach Abschluss der Validierung auf Bereitstellungsvorschau, um die Bereitstellung zu testen.

Nächste Schritte

Nachdem Sie Ihre Bereitstellung validiert und getestet haben, können Sie auf Veröffentlichen klicken, um Ihr gesamtes Produkt zur Überprüfung und Veröffentlichung im Cloud Marketplace einzureichen. Weitere Informationen finden Sie unter Produkt einreichen.