Referenzen verwenden

Sie können viele Typen von Ressourcen in Ihrer Konfiguration haben. Wenn Sie Ihre Anwendung weiterentwickeln, entstehen möglicherweise Abhängigkeiten zwischen Ressourcen in der gleichen Konfiguration. Dies kann kompliziert werden, weil die Reihenfolge der Erstellung für Ressourcen wichtig ist. Sie können beispielsweise einem Netzwerk keine VM-Instanzen hinzufügen, wenn das Netzwerk noch nicht existiert. Ebenso ist es nicht möglich, noch nicht vorhandene persistente Festplatten hinzuzufügen. Darüber hinaus erstellt Deployment Manager alle Ressourcen parallel, sodass es keine Garantie dafür gibt, dass abhängige Ressourcen in der richtigen Reihenfolge erstellt werden.

Um Ihnen zu helfen, diese Typen von Abhängigkeiten in der Konfigurationsdatei korrekt zu definieren, unterstützt Deployment Manager, dass die Erstellung der Ressourcen dynamisch angegeben wird. Insbesondere können Sie Referenzen verwenden, die sich auf andere Ressourcen beziehen und Deployment Manager dazu bringen, abhängige Ressourcen in der richtigen Reihenfolge zu erstellen. Referenzen bieten Vorteile, da:

  • Deployment Manager löst Ressourcen in abhängiger Reihenfolge auf. Dies bedeutet, wenn Ressource A sich auf Ressource B bezieht, wird Ressource B zuerst erstellt. Es spielt keine Rolle, wo Sie die Referenzen in der Konfiguration angeben. Deployment Manager bewertet Referenzen nach der Reihenfolge, unabhängig davon, wo sie in der Konfiguration stehen. Falls sich eine Instanz auf ein neues Netzwerk in einer Konfiguration bezieht, erstellt Deployment Manager immer zuerst das Netzwerk und dann die Instanz.
  • Referenzen erlauben es Ihnen, Eigenschaften von Ressourcen zu referenzieren. Sie können eine Referenz zu einer bestimmten Eigenschaft einer Ressource, wie der externen IP-Adresse einer VM-Instanz oder den selfLink eines Images, angeben. Wenn beispielsweise eine VM-Instanz eine sitzungsspezifische externe IP-Adresse verwendet, kennen Sie die IP-Adresse erst, wenn die VM-Instanz erstellt worden ist. Sie können stattdessen eine Referenz zum Feld natIP angeben. Deployment Manager erhält dann den Wert für natIP automatisch, sofern dieser vorhanden ist.

Verwenden Sie diese Syntax, um Referenzen in Ihrer Konfiguration zu nutzen:

$(ref.RESOURCE_NAME.PROPERTY)

Nun soll die Konfiguration aktualisiert werden, die Sie in Schritt 2 (Konfiguration erstellen) definiert haben. Auf diese Weise wird ein Netzwerk erstellt. Die zwei VM-Instanzen werden aktualisiert und verweisen auf das neue Netzwerk.

Netzwerkdefinition hinzufügen

Öffnen Sie die Konfiguration aus Schritt 2, two-vms.yaml, und fügen Sie die folgenden Definitionen der Netzwerkressourcen am Ende der Datei hinzu:

- name: a-new-network
  type: compute.v1.network
  properties:
    IPv4Range: 10.0.0.1/16

Netzwerke in den VM-Properties durch Referenzen ersetzen

Ersetzen Sie im Abschnitt Properties der beiden VM-Instanzen den Wert von network durch eine Referenz zu der Property selfLink des neuen Netzwerks, sodass die Property der Netzwerkschnittstelle so aussieht:

networkInterfaces:
- network: $(ref.a-new-network.selfLink)

Speichern Sie die Änderungen. Ihre Konfiguration sollte dann so aussehen:

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-f
    machineType: https://www.googleapis.com/compute/v1/projects/[MY_PROJECT]/zones/us-central1-f/machineTypes/f1-micro
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-8
    networkInterfaces:
    - network: $(ref.a-new-network.selfLink)
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT
- name: the-second-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-f
    machineType: https://www.googleapis.com/compute/v1/projects/[MY_PROJECT]/zones/us-central1-f/machineTypes/g1-small
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-8
    networkInterfaces:
    - network: $(ref.a-new-network.selfLink)
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT
- name: a-new-network
  type: compute.v1.network
  properties:
    IPv4Range: 10.0.0.1/16

Konfiguration erneut bereitstellen

gcloud deployment-manager deployments create deployment-with-references --config two-vms.yaml

Bereitstellung ansehen

gcloud deployment-manager deployments describe deployment-with-references

Geschafft! Sie haben Ihre erste Referenz erstellt! Behalten Sie Referenzen im Kopf, wenn Sie beginnen, eigene Bereitstellungen zu entwickeln.

Als nächstes organisieren Sie die Konfiguration neu, sodass flexible, wiederverwendbare Vorlagen entstehen.

Bereitstellung löschen

Compute Engine-Ressourcen verursachen Kosten, also sollten Sie diese Bereitstellung löschen, da Sie für die weiteren Schritte nicht mehr gebraucht wird. Durch Löschen dieser Bereitstellung werden alle Ressourcen in dieser Bereitstellung ebenfalls gelöscht. Wenn Sie die Bereitstellung nicht löschen, entstehen Konflikte mit späteren Beispielen.

gcloud deployment-manager deployments delete deployment-with-references

Nächster Schritt: Vorlage erstellen

Verwandte Themen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Cloud Deployment Manager-Dokumentation