VM-Image für die Terraform-Bereitstellung konfigurieren

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

Festlegen, wie Ihr Bereitstellungspaket erstellt wird

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

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

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 über die Google Cloud Console abzuschließen und ein einfaches Bereitstellungspaket zu senden:

  1. Gehen Sie im Producer Portal zum Abschnitt Deployment Package (Bereitstellungspaket).

  2. Klicken Sie unter Terraform-Konfiguration neben dem Eingabefeld mit der Bezeichnung 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.

    • Bestimmen Sie, welcher Detaillierungsgrad 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 Aufbewahrungsrichtlinien für Daten.

  3. Für Ihren Cloud Storage-Bucket muss die Objektversionsverwaltung aktiviert sein.

  4. Klicken Sie auf Konfigurieren, um die Bucket-Einstellungen zu speichern und mit dem Konfigurieren 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. 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 zusammen mit einem Nutzernamen und einem 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 Anweisungen für die Nutzer Ihres Produkts zur Verfügung stellen, um sie bei den ersten Schritten mit Ihrem Produkt zu unterstützen. Diese Anleitung ist für die Nutzer sichtbar, nachdem sie Ihr Produkt bereitgestellt haben.

  10. Nachdem Sie die vorherigen Schritte ausgeführt 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 und dann auf Generieren klicken, um das Bereitstellungspaket mit diesen Änderungen neu zu generieren.

  11. Validieren 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 Option für die manuelle Konfiguration ein Bereitstellungspaket erstellen und das Paket zur Überprüfung einreichen.

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

Sie können auswählen, ob Ihre Kunden bei der Bereitstellung 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 eigene Terraform-Vorlagen zur Verfügung stellen. Sie können diese Vorlagen in einer Form bereitstellen, die Kunden über die Befehlszeile (CLI) 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 wie Ihre Kunden das Modul bei benutzerdefinierten Terraform-Modulen bereitstellen sollen:

  1. Gehen Sie im Producer Portal zum Abschnitt Deployment Package (Bereitstellungspaket).

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

Anforderungen für benutzerdefinierte Terraform-Module

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

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

  • Das 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. Für den Wert von default muss der Name Ihres VM-Images festgelegt werden, damit die zu Cloud Marketplace gehörende Kopie des Images im Modul ersetzt werden kann, wenn Ihr VM-Produkt veröffentlicht wird.

  • Dein Modul darf nicht von externen Modulen abhängig sein, die nicht im Lieferumfang enthalten sind.

  • Für dein Modul dürfen nur die folgenden zugelassenen 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 UI-Bereitstellung

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 namens goog_cm_deployment_name enthalten. Cloud Marketplace verwendet diese Variable, um die Bereitstellungen Ihrer Kunden auf ihrer Bereitstellungsseite zu benennen. Sie sollten diese Variable verwenden, um Konflikte bei Ressourcennamen zwischen mehreren Bereitstellungen in einem Projekt zu vermeiden. Ein Beispiel finden Sie unter goog_cm_deployment_name im benutzerdefinierten Terraform-Beispielmodul.

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

  • 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 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ängig sein.

Zusätzliche Schritte für benutzerdefinierte Terraform-Module

Wenn Sie benutzerdefinierte Terraform-Module verwenden, 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 Deployment Package (Bereitstellungspaket).

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

    Damit Sie die Terraform-Bereitstellung Ihres Produkts aktivieren können, 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 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 die Bucket-Einstellungen zu speichern und mit dem Konfigurieren des Bereitstellungspakets fortzufahren.

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

(Nur UI-Bereitstellung) Metadaten für Ihr benutzerdefiniertes Terraform-Modul erstellen

Damit Ihr benutzerdefiniertes Modul die Bereitstellung über die UI unterstützt, müssen Sie Metadaten erstellen und hinzufügen, mit denen Cloud Marketplace das Modul korrekt parsen und in der UI für Ihren Kunden rendern kann.

Zum Erstellen und Hinzufügen dieser Metadaten können Sie das Open-Source-CFT CLI-Tool 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 gibt das Flag -p einen Pfad für das Terraform-Paket an. 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 und überspringt alle Module im Ordner modules/.

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

Metadaten Ihres 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 anpassen möchten, können Sie nach dem Erstellen der Metadaten die Werte der Felder in metadata.display.yaml ändern. Ausführliche Informationen zu den verfügbaren Anpassungsoptionen finden Sie in der Open-Source-Dokumentation zu BlueprintUI oder im BlueprintUI-Schema.

Wir empfehlen die Verwendung der Erweiterung GooglePropertyExtensions, um Ihre Metadaten zu ändern. Mit GooglePropertyExtensions können Sie Google Cloud-spezifische Validierungen verwenden, z. B. um zu 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 Ihres 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.

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 von Cloud Marketplace ausschließlich zur Überprüfung des Moduls verwendet wird. Wenn in Ihrer Vorlage Variablen deklariert sind, die keinen Standardwert haben, und Sie für diese Variablen keinen Wert 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 Variablen festzulegen, die in Ihrer Vorlage deklariert sind. Ein Beispiel für eine marketplace_test.tfvars-Datei finden Sie im Beispiel für ein benutzerdefiniertes Terraform-Modul.

(Optional) (nur Bereitstellung über die Befehlszeile) Testmodul hinzufügen

Wenn Ihr benutzerdefiniertes Modul die Bereitstellung über die Befehlszeile unterstützt, können Sie auch einen Ordner mit dem Namen examples/marketplace_test einschließen. Dies ist 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 Prüfung bestehen kann:

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 Deployment Package (Bereitstellungspaket).

  2. Klicke auf Validieren. Die Überprüfung kann bis zu zwei Stunden dauern. Sie können den Bildschirm währenddessen verlassen.

  3. Klicken Sie nach erfolgreichem Abschluss der 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 im Cloud Marketplace einzureichen. Weitere Informationen finden Sie unter Produkt einreichen.