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 an zu erstellenden Ressourcen.
    • name – Der Name der Instanziierung dieser Ressource.
    • type – Der Ressourcentyp. Dies kann ein Basistyp wie compute.v1.instance sein, oder es kann eine importierte Vorlage sein. Die vollständige Liste der unterstützten Ressourcen finden Sie in der Dokumentation für Unterstützte Ressourcentypen.
    • properties – Die Eigenschaften dieser Ressource. Eine Einführung finden Sie unter Vorlageneigenschaften.
    • metadata – Zusätzliche Konfiguration für diese Ressource. In Metadaten finden Sie eine Liste der Felder.

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 Ihre Ressourcen einstellen möchten, verwenden Sie einen accessControl-Abschnitt:

  1. Fügen Sie den Abschnitt accessControl zur obersten Ebene der Konfiguration für jede Ressource hinzu, für die die Richtlinie zur Zugriffskontrolle gelten soll.

  2. Geben Sie die gewünschte gcpIamPolicy für die Ressource an. Jede IAM-Richtlinie kann eine Liste an Bindungen enthalten. Jede Bindung bindet eine Liste von Mitgliedern an eine Rolle.

Ausführliche Informationen zu den Aktualisierungsrichtlinien finden Sie in Bereitstellung aktualisieren.

Der folgende Abschnitt accessControl fügt beispielsweise Bindungen hinzu, durch die Nutzern diese Rollen zugewiesen werden:

Nutzer 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

Verweise sind eine Möglichkeit, auf den Wert einer anderen Eigenschaft in Ihrer Konfiguration zu verweisen. Beim Festlegen eines Verweises wird auch eine explizite Abhängigkeit zwischen den beiden Ressourcen geschaffen und die Ressource, auf die verwiesen wird, wird immer erstellt, bevor die andere erstellt wird. Falls beispielsweise Ressource A auf Ressource B verweist, wird Resource B immer vor Ressource A erstellt.

Einen Verweis legen Sie fest, indem Sie die folgende Syntax verwenden, um den Wert einer Eigenschaft als Verweis zu bestimmen:

$(ref.[RESOURCE_NAME].[PATH_TO_PROPERTY])

Beispiele

$(ref.exampleInstance.networkInterfaces[0].natIp)
$(ref.exampleInstance.serviceAccounts[0].email)

Erfahren Sie mehr über Verweise.

Umgebungsvariablen

Umgebungsvariablen sind vordefinierte Variablen, die automatisch bestimmte, von Ihrer Bereitstellung abgeleitete Informationen übernehmen. Verwenden Sie Umgebungsvariablen in Ihrer Vorlage, um bekannte Informationen, die oft genutzt werden, zu übernehmen. Da die Werte von Umgebungsvariablen in jeder Bereitstellung eindeutig sind, können Sie diese Variablen auch verwenden, um eindeutige Namen zu erstellen, wenn Sie die gleiche Vorlage mehrmals bereitstellen.

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 eine Property, Vorlagenvariable oder Umgebungsvariable fest.

  • outputs – Gibt eine Liste an Ausgaben an, die Nutzer in Ihren Ressourcen-Properties aufrufen können.
    • name – Name der Ausgabe-Property.
    • value – Wert der Ausgabe-Property.

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. Beispielsweise benötigt die Funktion dependsOn einen Metadateneintrag.

Depends on

Die Property dependsOn erstellt explizite Abhängigkeiten zwischen Ihren Ressourcen. Beispielsweise wird durch die Angabe, Ressource A hängt von Ressource B ab, 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. Erfahren Sie mehr über Schemas.

Info

Die Eigenschaft info enthält Metainformationen über das Schema. Dies umfasst Informationen wie den 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

Importe

Das Feld imports enthält eine Liste von verknüpften Dateien, die für die Vorlagen, die dieses Schema verwenden, benötigt werden. Wenn Sie eine Vorlage mit einem Schema hochladen, das eine Liste an Importen hat, überprüft Deployment Manager, ob alle Dateien in der Property 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 Slaves

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 Eigenschaften alle unterstützten Validierungen für JSON-Schemas verwenden. Zum Beispiel:

  • type (String, boolescher Wert, ganze Zahl, 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 diese Eigenschaft 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 Slaves
    minimum: 1

Weitere Informationen

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

Feedback geben zu...

Cloud Deployment Manager-Dokumentation