Terraform-Bereitstellungsmodul für die VM erstellen
Auf dieser Seite wird beschrieben, wie Sie eine VM und ein Terraform-Bereitstellungsmodul für die VM erstellen.
Lizenziertes VM-Image erstellen
- Damit die Entwicklungs-VM nicht beeinträchtigt wird, erstellen Sie eine Kopie der in der VM verwendeten Festplatte. 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.
- Hängen Sie im Abschnitt Erweiterte Optionen das geklonte Laufwerk 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 zum Ausführen des Servers nicht erforderlich sind. Dasselbe Laufwerk wird zum Erstellen des VM-Images verwendet und ist später für Kunden zugänglich. Diese VM darf nur Bibliotheken enthalten, die für die Ausführung des Dienstes erforderlich sind.
- Bearbeiten Sie die VM und wählen Sie die Löschregel Laufwerk behalten aus.
- Löschen Sie diese VM.
- Rufen Sie die Lizenz zum Erstellen des lizenzierten Bildes im Producer Portal ab. Producer Portal
- Erstellen Sie ein neues VM-Produkt. Rufen Sie den Abschnitt 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-Bereitstellungsmodul erstellen
Marketplace bietet das Autogen-Tool zum Generieren der Terraform-Module für die Bereitstellung von VM-Images auf Marketplace.
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 Connectors 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 mindestens 2 CPUs und 8 GB RAM. N2d-standard ist optimal für Webserver mit mittlerem Traffic. Die Standard-VM kann mit 2 Cores festgelegt werden. Wenn Kunden mit mehr Traffic rechnen, kann dies beim Erstellen der VM über den Marketplace geändert werden. Informationen zu 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 einen String um und fügen Sie es in „bashScriptContent“ ein.
gceStartupScript: bashScriptContent:
- Definieren Sie die Eingabefelder, die bei der VM-Erstellung als Eingabe von Kunden verwendet werden.
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: {}
Behalten Sie die Platzierung als CUSTOM_TOP und den Namen als CONNECTOR_SETTINGS bei.
Definieren Sie das Feld und die Art der erforderlichen Eingabe. In diesem Beispiel werden die Felder Testdaten und Port zum Ausführen des Dienstes für die Kunden des Marketplace-Connectors angezeigt.
- 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 Details der 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 die automatische Generierung 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 den 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 auf dem Marketplace verwendet.
solutionInfo: name:packagedSoftwareGroups: - type: SOFTWARE_GROUP_OS components: - name: Ubuntu version: 16.04 LTS - components: - name: Apache version: 2.4.23