Auf dieser Seite wird die Syntax beschrieben, die Deployment Manager nutzt. Verwenden Sie diese Anleitung als Referenz für die Syntax, die Sie in Ihren Konfigurationen und Vorlagen verwenden.
Syntax für Konfigurationen und Vorlagen
Grundlegende Syntax
resources
: eine Reihe von zu erstellenden Ressourcen.name
: der Name der Instanziierung dieser Ressource.type
: der Ressourcentyp. Dies kann ein Basistyp wiecompute.v1.instance
, ein Typanbieter wiegcp-types/compute-v1:addresses
oder eine importierte Vorlage sein. Liste der unterstützten Typanbieterproperties
: die Attribute dieser Ressource. Eine Einführung dazu finden Sie unter Vorlagenattribute.metadata
: zusätzliche Konfiguration für diese Ressource. Eine Liste der Felder finden Sie unter Metadaten.
Beispiel
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
Zugriffssteuerung
Wenn Sie IAM-Richtlinien für Ressourcen festlegen möchten, verwenden Sie einen Abschnitt accessControl
:
Fügen Sie den Abschnitt
accessControl
der übergeordneten Konfiguration für jede Ressource hinzu, für die Sie Zugriffssteuerungsrichtlinien anwenden möchten.Geben Sie den gewünschten Abschnitt
gcpIamPolicy
für die Ressource an. Jede IAM-Richtlinie kann eine Liste mit Bindungen enthalten. Jede Bindung bindet eine Liste von Hauptkonten an eine Rolle.
Ausführliche Informationen zu den Aktualisierungsrichtlinien finden Sie in Bereitstellung aktualisieren.
Der folgende accessControl
-Abschnitt fügt beispielsweise Bindungen hinzu, die Nutzern die folgenden Rollen zuweisen:
User | Rolle |
---|---|
[email protected] |
roles/pubsub.editor |
roles/pubsub.publisher |
resources:
- name: a-new-pubsub-topic
type: pubsub.v1.topic
properties:
...
accessControl:
gcpIamPolicy:
bindings:
- role: roles/pubsub.editor
members:
- "user:alice@example.com"
- role: roles/pubsub.publisher
members:
- "user:jane@example.com"
- "serviceAccount:my-other-app@appspot.gserviceaccount.com"
Verweise
Informationen über die Verwendung von Verweisen und weitere Beispiele finden Sie unter Verweise erstellen.
Sie können Verweise zu den Attributen anderer Ressourcen verwenden, anstatt direkt Werte anzugeben. Wenn Sie z. B. einen Instanzgruppenmanager erstellen möchten, der eine Instanzvorlage aus derselben Bereitstellung verwendet, können Sie statt des vollständigen Links für die Instanzvorlage einen Verweis mit der Syntax $(ref.instance-template.selfLink)
verwenden.
Für welche Attribute Sie Verweise erstellen können, ist in der Methode get
für die API der Ressource aufgeführt. Eine Liste aller Attribute für eine VM-Instanz finden Sie z. B. in der Antwort für die Methode instances.get()
.
Verweise deklarieren Sie mit einer ähnlichen Syntax wie dem Punkt "." bei JSONPath. Verwenden Sie die folgende Syntax, um einen Verweis zu deklarieren:
$(ref.RESOURCE_NAME.PATH_TO_PROPERTY)
Für Attribute, bei denen es sich um Listen handelt, wie die Netzwerkschnittstellen für Compute Engine-Instanzen, verwenden Sie die folgende Syntax:
$(ref.RESOURCE_NAME.LIST_PROPERTY[index].ITEM)
Beispiele
$(ref.exampleInstance.networkInterfaces[0].natIp)
$(ref.exampleInstance.serviceAccounts[0].email)
Bereitstellungsspezifische Umgebungsvariablen
Wenn Sie eine Bereitstellung erstellen, erstellt Deployment Manager Umgebungsvariablen, die Informationen über Ihre Bereitstellung enthalten, z. B. den aktuellen Projektnamen, den Namen der Bereitstellung usw.
Eine vollständige Liste aller verfügbaren Umgebungsvariablen finden Sie unter Umgebungsvariablen.
So verwenden Sie eine Umgebungsvariable:
{{ env["deployment"] }} # Jinja context.env["deployment"] # Python
Beispiel
- type: compute.v1.instance name: vm-{{ env["deployment"] }}
Vorlagen-Properties
Eine Vorlagen-Property ist eine beliebige Property, die Sie erstellen können. Anstatt einen Wert fest zu programmieren, können Sie eine Vorlagen-Property festlegen und den Wert der Property in der obersten Ebene der Konfiguration bestimmen. So müssen Sie die Property und den Wert nicht statisch in Ihrer Vorlage angeben. Eine Vorlagen-Property erstellen Sie mithilfe der folgenden Syntax:
{{ properties["property-name"] }} # Jinja context.properties["property-name"] # Python
Legen Sie dann den Wert der Property in Ihrer übergeordneten Konfiguration oder der übergeordneten Vorlage fest:
imports:
- path: vm_template.jinja
resources:
- name: my-vm
type: vm_template.jinja
properties:
property-name: example-value
Erfahren Sie mehr über Vorlagen-Properties.
Ausgaben
Im Abschnitt Ausgaben können Sie beliebige Schlüssel/Wert-Paare definieren, die gewisse Informationen über Ihre Bereitstellung freigeben. Sie geben die Schlüssel an und legen den Wert entweder als statischen String, Verweis auf ein Attribut, Vorlagenvariable oder Umgebungsvariable fest.
outputs
– Gibt eine Liste von Ausgaben an, die Nutzer in Ihren Ressourcenattributen aufrufen können.name
– Name des Ausgabeattributs.value
– Wert des Ausgabeattributs.
Beispiel
resources:
- name: vm-instance
type: compute.v1.instance
...
outputs:
- name: databaseIp
value: $(ref.vm-instance.networkInterfaces[0].natIp)
- name: databaseName
value: example-database
Erfahren Sie mehr über Ausgaben.
Metadaten
Der Abschnitt metadata
enthält besondere Metadaten, die Sie pro Ressource anwenden können. Deployment Manager verfügt über eindeutige Metadaten, die gewisse Funktionen auslösen. Die Funktion dependsOn
beruht beispielsweise auf einem Metadateneintrag.
dependsOn
Das Attribut dependsOn
erstellt explizite Abhängigkeiten zwischen Ihren Ressourcen.
Beispielsweise wird durch die Angabe, dass Ressource A von Ressource B abhängt, sichergestellt, dass Ressource B immer vor Ressource A erstellt wird.
metadata: the metadata for this resource
dependsOn: Any explicit dependencies to another resource.
Beispiel
resources:
- name: vm-instance
type: compute.v1.instance
properties:
machineType: zones/us-central1-a/machineTypes/n1-standard-1
...
metadata:
dependsOn:
- persistent-disk-1
- a-new-network-1
Erfahren Sie mehr über das Erstellen von expliziten Abhängigkeiten.
Syntax für Schemas
Ein Schema ist eine Möglichkeit zu steuern, wie Nutzer mit Ihren Vorlagen interagieren können. Die folgende Syntax kann in Ihrer Schemadatei verwendet werden. Weitere Informationen über Schemas.
info
Das Attribut info
enthält Metainformationen über das Schema. Dazu gehören Informationen wie der Titel, eine Versionsnummer, eine Beschreibung und so weiter.
Geben Sie in dieser Eigenschaft zumindest Titel und Beschreibung an.
Beispiel
info:
title: MongoDB Template
author: Jane
description: Creates a MongoDB cluster
version: 1.0
imports
Das Feld imports
enthält eine Liste der entsprechenden Dateien, die für Vorlagen erforderlich sind, die dieses Schema verwenden. Wenn Sie eine Vorlage mit einem Schema hochladen, das eine Liste an Importen hat, überprüft Deployment Manager, ob alle Dateien im Attribut imports zusammen mit der Vorlage hochgeladen wurden.
Beispiel
imports:
- path: helper.py
name: mongodb_helper.py
required
Das Feld required beinhaltet eine Liste an Elementen vom Feld Eigenschaften, die in der Vorlage, die das Schema verwendet, benötigt werden. Jedes Element, das nicht im Feld required angegeben ist, wird als optional angesehen.
Beispiel
required:
- name
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
properties
Das Feld properties
enthält die JSON-Schemaregeln für dieses Dokument.
Elemente, die im Feld properties beschrieben sind, können von Nutzern der Vorlage gesetzt werden.
Sie können für diese Attribute alle unterstützten Validierungen für JSON-Schemas verwenden. Zum Beispiel:
type
(String, Boolean, Ganzzahl, Zahl, ...)default
minimum / exclusiveMinimum / maximum / exclusiveMaximum
minLength / maxLength
pattern
not X / allOf X, Y / anyOf X, Y / oneOf X, Y
Es ist ratsam zumindest einen Typ und eine Beschreibung des Feldes anzugeben, damit Nutzer wissen, welche Werte für dieses Attribut akzeptiert werden. Für optionale Eigenschaften empfiehlt es sich auch, eine Standardvariable anzugeben.
Eine Liste an Validierungs-Keywords finden Sie in der Dokumentation JSON Schemavalidierung.
Beispiel
properties:
name:
type: string
description: Name of your Mongo Cluster
size:
type: integer
default: 2
description: Number of Mongo Secondaries
minimum: 1
Weitere Informationen
- Weitere Informationen zu Referenzen.
- Weitere Informationen zu Umgebungsvariablen.
- Weitere Informationen zu Vorlagen-Properties.
- Weitere Informationen zu Ergebnissen.
- Mehr über Schemas erfahren