Terraform-Bereitstellungsmodul für die VM erstellen
Auf dieser Seite wird beschrieben, wie Sie eine virtuelle Maschine (VM) und ein Terraform-Bereitstellungsmodul für die VM erstellen.
Lizenziertes VM-Image erstellen
- Damit die Entwicklungs-VM nicht betroffen ist, erstellen Sie eine Kopie des in der VM verwendeten Laufwerks. Führen Sie dazu den folgenden gcloud-Befehl aus:
gcloud compute disks create CLONE_DISK \ --description="cloned disk" \ --source-disk=projects/PROJECT/zones/ZONE/disks/SOURCE_VM_DISK
- Erstellen Sie den Klon der VM. Weitere Informationen finden Sie unter VM erstellen, die einer vorhandenen VM ähnelt.
- Schließen Sie das geklonte Laufwerk im Bereich Erweiterte Optionen an.
- Erstellen Sie die VM.
- Prüfen Sie, ob der Server für diese VM ausgeführt wird. Das Startskript sorgt dafür, dass die VM ausgeführt wird.
- Beenden und entfernen Sie den Connector-Dienst in Docker.
- Entfernen Sie das Basisverzeichnis und alle anderen Dateien, die nicht zum Ausführen des Servers erforderlich sind. Dieses Laufwerk wird auch zum Erstellen des VM-Images verwendet und kann später von Kunden verwendet werden. Auf dieser VM dürfen nur Bibliotheken vorhanden sein, die für die Ausführung des Dienstes erforderlich sind.
- Bearbeiten Sie die VM und wählen Sie als Löschregel Laufwerk behalten aus.
- Löschen Sie diese VM.
- Rufen Sie die Lizenz im Producer Portal ab, um das lizenzierte Image zu erstellen. Producer Portal aufrufen
- Erstellen Sie ein neues Produkt vom Typ „Virtuelle Maschine“. Rufen Sie den Bereich Bereitstellungspaket auf und kopieren Sie die VM-Lizenz.
- Führen Sie den folgenden Befehl aus, um das lizenzierte VM-Image zu erstellen:
gcloud compute images create VM_IMAGE_NAME \ --project PUBLIC_PROJECT_NAME \ --source-disk projects/DEV_PROJECT_NAME/zones/ZONE/disks/SOURCE_VM_DISK \ --licenses LICENSE \ --description VM_IMAGE_DESCRIPTION
Weitere Informationen finden Sie unter VM erstellen.
Terraform-Deployment-Modul erstellen
Der Marketplace bietet das Autogen-Tool, mit dem die Terraform-Module für die Bereitstellung des VM-Images im Marketplace generiert werden.
Dieses Tool verwendet die Autogen-Proto-Definition, um die Bereitstellung zu generieren. Weitere Informationen finden Sie unter Beispielkonfiguration.
- Fügen Sie die Details Ihrer Lösung hinzu:
- Erstellen Sie für Konnektoren ein Modul mit einer VM. Geben Sie den Projektnamen, den Namen des VM-Images und die Labels für das Image in Ihrem öffentlichen Projekt ein.
- Verwenden Sie „n2d-standard-2“ als Standardmaschinentyp mit einer Mindestanzahl von 2 CPUs und 8 GB RAM. Der N2d-Standard ist optimal für Webserver mit mittlerem Traffic. Die Standard-VM kann mit 2 Kernen festgelegt werden. Wenn Kunden einen höheren Traffic erwarten, kann dies beim Erstellen der VM über den Marketplace geändert werden. Informationen zu den Preisen für verschiedene Maschinentypen finden Sie unter Preise für VM-Instanzen.
machineType: # Check http://cloud.google.com/compute/docs/machine-types for all available types defaultMachineType: gceMachineType: n2d-standard-2 # Minimum CPU and memory constraints for the machine type to run your solution properly minimum: cpu: 2 ramGb: 8
- Verwenden Sie pd-standard als Standardlaufwerkstyp.
bootDisk: diskType: defaultType: pd-standard
- Fügen Sie das Startskript der autogen-Konfiguration hinzu. Wandeln Sie das Startskript in eine Zeichenfolge um und fügen Sie es in „bashScriptContent“ ein.
gceStartupScript: bashScriptContent:
- Definieren Sie die Eingabefelder, die Kunden während der VM-Erstellung eingeben können.
deployInput: sections: # The place int he Deployment Manager config that this section will appear. More details in deployment_package_autogen_spec.proto - placement: CUSTOM_TOP name: CONNECTOR_SETTINGS title: Connectors settings description: Connectors settings tooltip: Setting with which connector VM will be running # List of input fields that this section has fields: - required: false name: TEST_DATA title: Test Data description: Test data tooltip: random data for testing string_box: {} - required: false name: PORT title: Port to run service tooltip: Port to run connector service string_box: {} - required: false name: LOG_LEVEL title: Log level description: Log level for the web service. Allowed values are DEBUG, INFO, WARNING, ERROR. Default is INFO string_box: {}
Lassen Sie die Platzierung bei CUSTOM_TOP und den Namen bei CONNECTOR_SETTINGS.
Definieren Sie das Feld und die erforderliche Eingabe. In diesem Beispiel sind die Felder Testdaten und Port zum Ausführen des Dienstes für die Kunden des Marktplatz-Connectors zu sehen.
- Definieren Sie die Compute Engine-Metadatenelemente. Beim Definieren der VM-Metadaten Ordnen Sie den Namen des Eingabefelds dem Metadatenschlüssel zu.
gce_metadata_items: - key: CONNECTOR_ENV_PORT value_from_deploy_input_field: PORT - key: CONNECTOR_ENV_TEST_DATA value_from_deploy_input_field: TEST_DATA - key: CONNECTOR_ENV_LOG_LEVEL value_from_deploy_input_field: LOG_LEVEL
- Fügen Sie die Schritte hinzu, die Kunden nach der Bereitstellung angezeigt werden.
postDeploy: # List of suggested action items for users, after deployment is successful actionItems: - heading: Create the Private service attachment description: Now the connector service is running on the VM, please create the PSC service attachment to create the connection. Follow https://cloud.google.com/integration-connectors/docs/configure-psc for the detailed guide. - heading: Create the connection description: After creating the connectors endpoint attachment, use the endpoint attachment to create a connection to the partner connector.
- Führen Sie den folgenden Befehl aus, um autogen einzurichten:
alias autogen='docker run \ --rm \ --workdir /mounted \ --mount type=bind,source="$(pwd)",target=/mounted \ --user $(id -u):$(id -g) \ gcr.io/cloud-Marketplace-tools/dm/autogen' autogen --help
- Führen Sie folgenden Befehl aus, um das Terraform-Modul zu generieren:
mkdir solution_folder autogen \ --input_type YAML \ --single_input example-config/solution.yaml \ --output_type PACKAGE \ --output solution_folder
Der Ordner „solution_folder“ enthält das Terraform-Modul. Dieses Modul wird beim Veröffentlichen von Produkten im Marketplace verwendet.
solutionInfo: name:packagedSoftwareGroups: - type: SOFTWARE_GROUP_OS components: - name: Ubuntu version: 16.04 LTS - components: - name: Apache version: 2.4.23