Wenn Sie die Attribute für Ihre Konfiguration oder Ihre Vorlagen definieren, können Sie Verweise auf die Attribute anderer Ressourcen verwenden, anstatt Werte direkt bereitzustellen. Wenn Sie z. B. einen Instanzgruppenmanager erstellen möchten, der eine Instanzvorlage aus derselben Bereitstellung verwendet, können Sie anstelle des vollständigen Links für die Instanzvorlage einen Verweis mit der Syntax $(ref.instance-template.selfLink)
verwenden.
Mit Verweisen können Sie Folgendes tun:
Auf Attribute zugreifen, die erst beim Erstellen der Ressource definiert werden. Wenn Sie beispielsweise in Ihrer Konfiguration eine virtuelle Maschine definieren, kennen Sie deren IP-Adresse noch nicht. Sie können aber eine Referenz für die IP-Adresse verwenden. Wenn Sie Ihre Konfiguration bereitstellen, wird die VM zuerst erstellt und Deployment Manager ruft die externe IP-Adresse ab, wenn sie verfügbar ist.
Die Konfigurationen oder Vorlagen so umgestalten, dass sie einfacher zu lesen und Fehler leichter zu beheben sind. Wenn Sie beispielsweise mehrere Weiterleitungsregeln konfigurieren müssen, müssen Sie auch ein zu verwendendes Netzwerk angeben. Anstatt für jede Weiterleitungsregel einen Link zum Netzwerk bereitzustellen, können Sie mithilfe der folgenden Syntax einen Verweis auf das Attribut
selfLink
des Netzwerks erstellen:$(ref.network-name.selfLink)
Wenn Sie Probleme mit Ihrer Konfiguration beheben müssen, können Sie anhand des Verweises leichter feststellen, welches Netzwerk in der Weiterleitungsregel verwendet wird.
Wenn Sie einen Verweis auf eine Ressource erstellen, erstellen Sie auch eine Abhängigkeit zwischen Ressourcen. Betrachten Sie beispielsweise das folgende Snippet, in dem sandbox-vm
einen Verweis auf network-a
verwendet:
resources:
- name: sandbox-vm
type: compute.v1.instance
properties:
network: $(ref.network-a.selfLink)
...
...
- name: network-a
type: compute.v1.network
properties:
...
Wenn Sie diese Konfiguration bereitstellen, erstellt Deployment Manager network-a
vor sandbox-vm
, damit der Verweis aufgelöst werden kann. Wenn Verweise nicht erfolgreich aufgelöst werden, kommt es zu einem Fehler bei der Bereitstellung.
Sie können Verweise in Konfigurationen und Vorlagen verwenden.
Hinweis
- Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie das gcloud-Befehlszeilentool.
- Wenn Sie die API-Beispiele in dieser Anleitung verwenden möchten, richten Sie den API-Zugriff ein.
- Machen Sie sich mit dem Erstellen einer Konfiguration vertraut.
- Machen Sie sich mit dem Erstellen einer Basisvorlage vertraut.
Verweise in Konfigurationsdateien erstellen
Geben Sie Verweise in Ihrer Konfiguration im folgenden Format an:
$(ref.RESOURCE_NAME.PROPERTY)
Im folgenden Beispiel werden zuerst ein Netzwerk und dann zwei Instanzen erstellt, die Verweise auf das neue Netzwerk verwenden. In diesem Beispiel lautet der Verweis:
$(ref.a-new-network.selfLink)
Wenn Sie diese Konfiguration bereitstellen, wird das Netzwerk vor den beiden Instanzen erstellt und der Verweis wird in den selfLink
der Netzwerkressource aufgelöst.
Verweise in Vorlagen erstellen
In Vorlagendateien muss dem gesamten Verweis ein $
vorangestellt werden. Der Verweis selbst wird in Klammern gesetzt:
$(ref.RESOURCE_NAME.PROPERTY)
Sie können Verweise mit anderen Funktionen wie Vorlagenattributen und Umgebungsvariablen kombinieren. Damit Deployment Manager den Verweis korrekt parst, muss der gesamte Verweisstring unbedingt in Klammern stehen.
Nachstehend finden Sie einige Beispiele für die Angabe von Verweisen.
Jinja
Verweis, der eine Umgebungsvariable enthält
network: $(ref.{{ env["deployment"] }}-network.selfLink)
Verweis auf einen Wert in einem Array
subnetwork: $(ref.{{ env["deployment"] }}-vm.networkInterfaces[2].subnetwork)
Verweis, der ein Vorlagenattribut enthält
network: $(ref.{{ properties["network"] }}.selfLink)
Verweis mit einem Jinja-Parameter
network: $(ref.{{ NETWORK_NAME }}.selfLink)
Verweis in Ausgaben
outputs: - name: UrlToService value: http://$(ref.{{ env["deployment"] }}-network.networkInterfaces[0].accessConfigs[0].natIp):8080/
Python
Verweis, der eine Umgebungsvariable enthält
'network': '$(ref.' + context.env['deployment'] + '-network.selfLink)'
Verweis auf einen Wert in einem Array
'subnetwork': '$(ref.' + context.env['deployment'] + '-vm.networkInterfaces[2].subnetwork)'
Verweis, der ein Vorlagenattribut enthält
'network': '$(ref.' + context.properties['network'] + '.selfLink)'
Verweis mit einem Python-Parameter
'value': '$(ref.' + base_name + '.networkInterfaces[0].networkIP)'
Verweis in Ausgaben
outputs = [{'name': 'UrlToService', 'value': '$(ref.' + context.env['deployment'] + '-network.networkInterfaces[0].accessConfigs[0].natIP):8080'}]
Weitere Informationen
- Konfigurationsvorschau ansehen
- Bereitstellung mit gcloud oder der API erstellen
- Mehr über Vorlagen erfahren