VM-Image für die Terraform-Bereitstellung konfigurieren

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

Festlegen, wie Ihr Bereitstellungspaket erstellt wird

Wir empfehlen Ihnen, das Bereitstellungspaket direkt in der Google Cloud Console mit der geführten Konfiguration im Producer Portal zu erstellen.

Die Option für die geführte Konfiguration unterstützt einfache VM-Produkte, z. B. Bereitstellungen für eine einzelne VM mit grundlegenden Firewallregeln, aber nicht einige komplexe Features wie Bereitstellungen mit mehreren VMs und Nicht-Computing-Ressourcen. Wenn Sie Features benötigen, die von der geführten Konfiguration nicht unterstützt werden, können Sie die manuelle Konfigurationsoption verwenden, um entweder Ihr Bereitstellungspaket zu erstellen oder ein vorhandenes Paket durch Hinzufügen zusätzlicher Funktionen anzupassen.

Zwischen geführter und manueller Konfiguration wechseln

Wenn Sie die geführte Konfiguration im Producer Portal verwenden und später zur manuellen Konfiguration des Bereitstellungspakets wechseln möchten, klicken Sie auf Zur manuellen Konfiguration.

Geführte Konfiguration abschließen

Führen Sie die folgenden Schritte aus, um die Konfiguration und das Senden eines einfachen Bereitstellungspakets mit der Google Cloud Console abzuschließen:

  1. Gehen Sie im Producer Portal zum Abschnitt Bereitstellungspaket.

  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.

    • Legen Sie den Detaillierungsgrad fest, der auf die IAM-Berechtigungen (Identity and Access Management) für die Daten des Buckets angewendet werden soll.

    • Konfigurieren Sie optionale erweiterte Einstellungen wie Verschlüsselung oder Datenaufbewahrungsrichtlinien.

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

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

  5. Unter Maschinentyp auswählen müssen Sie eine Standardzone, einen Mindestmaschinentyp und einen Standardmaschinentyp für Ihr VM-Produkt sowie die Größe und den Typ des Bootlaufwerks angeben.

  6. Unter Betriebssystem angeben müssen Sie den Namen und die Version des Betriebssystems angeben, 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 festlegen und Firewallregeln konfigurieren.

  9. Optional können Sie unter Nächste Schritte definieren eine Anleitung für die Nutzer Ihres Produkts angeben, um sie bei den ersten Schritten mit Ihrem Produkt zu unterstützen. Diese Anleitung ist für sie sichtbar, nachdem sie Ihr Produkt bereitgestellt hat.

  10. Nachdem Sie die vorherigen Schritte abgeschlossen haben, klicken Sie auf Generieren, um das 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 klicken, um das Bereitstellungspaket mit den angewendeten Änderungen neu zu generieren.

  11. Prüfen Sie das Bereitstellungspaket im Producer Portal.

  12. Nachdem die Validierung Ihres Bereitstellungspakets durch Cloud Marketplace erfolgreich abgeschlossen wurde, 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 zur Überprüfung einreichen.

Geben Sie an, ob das Standardmodul oder ein benutzerdefiniertes Terraform-Modul verwendet werden soll

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

Wenn Sie sich für die Verwendung des Terraform-Standardmoduls entscheiden, stellt Google Cloud Ihren Kunden automatisch generierten Terraform-Code zur Verfügung, mit dem sie Ihr Produkt bereitstellen können.

Wenn Sie sich für ein benutzerdefiniertes Terraform-Modul entscheiden, müssen Sie Ihrem Kunden Ihre eigenen Terraform-Vorlagen bereitstellen. Sie können diese Vorlagen in einer Form bereitstellen, die Kunden über die Befehlszeile bereitstellen können, oder mit zusätzlichen Metadaten, mit denen Kunden Module direkt über Cloud Marketplace bereitstellen können.

Führen Sie die folgenden Schritte aus, um anzugeben, ob Ihre Kunden das Standard- oder ein benutzerdefiniertes Terraform-Modul verwenden sollen, und für benutzerdefinierte Terraform-Module, wie Ihre Kunden das Modul bereitstellen sollen:

  1. Gehen Sie im Producer Portal zum Abschnitt Bereitstellungspaket.

  2. Wählen Sie unter Terraform-Konfiguration unter Typ die Option Standard, Benutzerdefiniert (CLI-Bereitstellung) oder Benutzerdefiniert (UI-Bereitstellung) aus.

Anforderungen an benutzerdefinierte Terraform-Module

Wenn Sie benutzerdefinierte Terraform-Module verwenden, muss Ihr benutzerdefiniertes Modul die folgenden Anforderungen erfüllen:

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

  • Das Modul muss eine Variable mit dem Namen project_id haben, in der die Projekt-ID gespeichert ist, mit der Ihre Kunden das Modul bereitstellen.

  • 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 werden, damit die Cloud Marketplace-eigene Kopie des Images bei der Veröffentlichung Ihres VM-Produkts im Modul ersetzt werden kann.

  • Ihr Modul darf nicht von externen Modulen abhängen, die nicht im Paket enthalten sind.

  • Ihr Modul darf nur die folgenden zugelassenen Anbieter verwenden:

    • 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 in der UI

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

  • Das Modul muss eine Variable mit dem Namen goog_cm_deployment_name enthalten. Cloud Marketplace verwendet diese Variable, um die Bereitstellungen Ihrer Kunden auf der Bereitstellungsseite zu benennen. Sie sollten diese Variable verwenden, um Konflikte bei der Ressourcenbenennung zwischen mehreren Bereitstellungen in einem Projekt zu vermeiden. Ein Beispiel finden Sie im Beispiel für ein benutzerdefiniertes Terraform-Modul unter goog_cm_deployment_name.

  • 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 Images mit mehreren VMs oder Images enthält, die mehrere CPU-Architekturen unterstützen, müssen Sie enumValueLabels hinzufügen, damit Ihre Kunden das VM-Image auswählen können, das sie verwenden möchten. Ein Beispiel finden Sie im Beispiel für ein benutzerdefiniertes Terraform-Modul.

  • Ihr Modul darf nicht von der Unterstützung von Terraform-Bereitstellern abhängig sein.

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 das VM-Image für die Bereitstellung zu konfigurieren:

  1. Gehen Sie im Producer Portal zum Abschnitt Bereitstellungspaket.

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

    Um die Terraform-Bereitstellung Ihres Produkts zu aktivieren, müssen Sie die Nutzung von Marketplace-Images aktiviert haben. Cloud Marketplace verwendet die hier hinzugefügte Variable, um die Marketplace-Version Ihres VM-Images auszutauschen, wenn ein Kunde Ihr Produkt bereitstellt.

  3. Geben Sie im Textfeld Image-Variable 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 Geben Sie den Speicherort Ihres GCS-Objekts an 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 die Bucket-Einstellungen zu speichern und mit der Konfiguration des Bereitstellungspakets fortzufahren.

  8. Geben Sie unter Erforderliche Rollen die IAM-Rollen an, die Ihre Kunden zum Bereitstellen Ihres Produkts haben müssen.

(Nur UI-Bereitstellung) Metadaten für das benutzerdefinierte Terraform-Modul erstellen

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

Zum Erstellen und Hinzufügen dieser Metadaten können Sie das Open-Source-Tool CFT CLI verwenden. Führen Sie die folgenden Schritte aus, um mit CFT Metadaten zu erstellen und Ihren benutzerdefinierten Modulen hinzuzufügen:

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

    • 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 stellt das Flag -p einen Pfad für das Terraform-Paket bereit, das Flag -q generiert Metadaten, ohne dass Informationen für ein Remote-Repository erforderlich sind, 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 abgeschlossen haben, generiert das CFT-CLI-Tool zwei neue Dateien: metadata.yaml und metadata.display.yaml.

Metadaten des benutzerdefinierten Terraform-Moduls anpassen

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

Wir empfehlen, zum Ändern Ihrer Metadaten die Erweiterung GooglePropertyExtensions zu verwenden. Mit GooglePropertyExtensions können Sie Google Cloud-spezifische Validierungen verwenden. Beispielsweise können Sie erzwingen, 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 stellt das Flag -p einen Pfad für das Terraform-Paket bereit und das Flag -v validiert alle Metadatendateien unter dem angegebenen Pfad anhand des BlueprintMetadata-Schemas.

Testen, ob Ihr Modul die Überprüfung besteht

Ihr benutzerdefiniertes Modul besteht die Überprü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 Cloud Marketplace für diese Überprüfung des Moduls verwendet. 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 Ihrer Vorlage deklarierten Variablen festzulegen. Eine marketplace_test.tfvars-Beispieldatei finden Sie im Beispiel für ein benutzerdefiniertes Terraform-Modul.

(Optional) (nur CLI-Bereitstellung) Ein Testmodul hinzufügen

Wenn Ihr benutzerdefiniertes Modul die Bereitstellung über die Befehlszeile unterstützt, können Sie optional einen Ordner mit dem Namen examples/marketplace_test einschließen. Dies ist beispielsweise sinnvoll, wenn Ihr Produkt ein separates Testmodul zur Überprüfung seiner Funktionen enthalten muss. Wenn Sie diesen Ordner hinzufügen, 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 das Bereitstellungspaket erstellt und konfiguriert haben, müssen Sie es validieren und testen, bevor das Cloud Marketplace-Team es prüfen und genehmigen kann.

  1. Gehen Sie im Producer Portal zum Abschnitt Bereitstellungspaket.

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

  3. Klicken Sie nach erfolgreicher Validierung auf Bereitstellungsvorschau, um Ihre Bereitstellung zu testen.

Nächste Schritte

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