Syntaxreferenz

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 wie compute.v1.instance, ein Typanbieter wie gcp-types/compute-v1:addresses oder eine importierte Vorlage sein. Liste der unterstützten Typanbieter
    • properties: 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:

  1. Fügen Sie den Abschnitt accessControl der übergeordneten Konfiguration für jede Ressource hinzu, für die Sie Zugriffssteuerungsrichtlinien anwenden möchten.

  2. 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
alice@example.com roles/pubsub.editor
  • my-other-app@appspot.gserviceaccount.com
  • jane@example.com
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 references 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, integer, number, ...)
  • 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

Nächste Schritte