Vorlageneigenschaften definieren

Einer der Vorteile von Vorlagen ist die Möglichkeit, benutzerdefinierte Vorlageneigenschaften zu erstellen und zu definieren. Vorlageneigenschaften sind beliebige Variablen, die Sie in Vorlagendateien definieren. Jede Konfigurationsdatei oder Vorlagendatei, die die betreffende Vorlage verwendet, kann einen Wert für die Vorlageneigenschaft bereitstellen, ohne die Vorlage direkt zu ändern. Dadurch können Sie die Eigenschaft abstrahieren, sodass Sie den Wert der Eigenschaft für jede eindeutige Konfiguration ändern können, ohne die zugrunde liegende Vorlage zu aktualisieren.

Die folgende Zeile gibt beispielsweise eine Vorlageneigenschaft in der URL des Maschinentyps an:

machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1

In einer Konfiguration, die diese Vorlage verwendet, können Sie den Wert von zone im properties-Abschnitt der Vorlage festlegen:

imports:
- path: vm_template.jinja

resources:
- name: my-vm
  type: vm_template.jinja
  properties:
    zone: us-central1-a

Deployment Manager übergibt den Wert von zone automatisch an die zugrunde liegende Vorlage.

Vorbereitung

Vorlageneigenschaften erstellen

So erstellen Sie eine Vorlageneigenschaft:

Jinja

In Jinja definieren Sie eine Property mit der folgenden Syntax:

{{ properties["PROJECT_NAME"] }}

Beispiel:

- name: vm-{{ env["deployment"] }}
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-9
    networkInterfaces:
    - network: global/networks/default

Python

In Python definieren Sie eine Property mit der folgenden Syntax:

  context.properties["PROPERTY_NAME"]

Beispiel:

resources.append({
    'name': 'vm-' + context.env['deployment'],
    'type': 'compute.v1.instance',
    'properties': {
        'zone': 'us-central1-a',
        'machineType': ''.join(['zones/', context.properties['zone'],
                                '/machineTypes/n1-standard-1']),
        'disks': [{
            'deviceName': 'boot',
            'type': 'PERSISTENT',
            'boot': True,
            'autoDelete': True,
            'initializeParams': {
                'sourceImage':
                    'projects/debian-cloud/global/images/family/debian-9'
            }
        }],
        'networkInterfaces': [{
            'network': 'global/networks/default'
        }]
    }

})

Das vollständige Python-Beispiel finden Sie im GitHub-Repository von Deployment Manager.

Vorlageneigenschaftswerte in übergeordneter Konfiguration festlegen

In der übergeordneten Konfiguration können Sie Werte für Vorlageneigenschaften mithilfe der folgenden Syntax festlegen:

imports:
- path: vm_template.jinja

resources:
- name: my-vm
  type: vm_template.jinja
  properties:
    zone: us-central1-a

Sie müssen Werte für alle Vorlageneigenschaften in der Vorlage festlegen. Beispiel: Wenn eine Vorlage die Vorlageneigenschaften zone, image und network hat, müssen Sie Werte für alle diese Eigenschaften in der übergeordneten Konfiguration festlegen.

Wenn bestimmte Eigenschaften Standardwerte haben, können Sie diese auch in Schemas festlegen. Eine Vorlageneigenschaft mit einem Standardwert kann in der übergeordneten Konfiguration ausgelassen werden, wenn der Standardwert für die Bereitstellung geeignet ist.

Werte für Vorlageneigenschaften in der Befehlszeile festlegen

Anstatt Werte für Vorlageneigenschaften in der übergeordneten Datei zur Verfügung zu stellen, die die Vorlage importiert, bietet Deployment Manager die Möglichkeit, diese Werte direkt im gcloud-Befehlszeilentool zu setzen. Dank dieser Funktion können Sie das Erstellen der YAML-Datei der obersten Ebene überspringen. Deployment Manager generiert die übergeordnete Konfiguration für Ihre Bereitstellung automatisch auf der Basis der Informationen in Ihrer Anfrage.

Angenommen Sie haben beispielsweise die folgende Vorlage mit der Vorlageneigenschaft zone:

- name: vm-{{ env["deployment"] }}
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/{{ properties["zone"] }}/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-9
    networkInterfaces:
    - network: global/networks/default

Mit dem gcloud-Befehlszeilentool, können Sie die Vorlagendatei direkt übergeben und die Werte für die Vorlageeigenschaften in der Befehlszeile zur Verfügung stellen. Die folgende Anfrage wird beispielsweise in die Vorlage übergeben und legt die Eigenschaft zone direkt in der Befehlszeile fest:

gcloud deployment-manager deployments create a-single-vm --template vm_template.jinja \
    --properties zone:us-central1-a

Beachten Sie Folgendes:

  • Alle Werte werden als YAML-Werte geparst. Beispielsweise wird version: 3 als Ganzzahl übergeben. Wenn Sie dies als String angeben möchten, setzen Sie den Wert in einfache Anführungszeichen in Escapezeichen: version: \'3\'.

  • Bei booleschen Werten spielt die Groß- und Kleinschreibung keine Rolle, sodass TRUE, true und True gleich behandelt werden.

  • Sie müssen alle erforderlichen Eigenschaften übergeben, die von der Vorlage definiert werden. Sie können nicht nur einen Teil der Eigenschaften bereitstellen. Wenn bestimmte Eigenschaften Standardwerte haben, können Sie diese Eigenschaften in der Befehlszeile weglassen.

Wenn Sie mehrere Eigenschaften angeben möchten, geben Sie durch Kommas getrennte Schlüssel/Wert-Paare an. Die Reihenfolge, in der die Paare angegeben sind, spielt keine Rolle. Beispiel:

gcloud deployment-manager deployments create my-igm \
    --template vm_template.jinja \
    --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9

Nach der Ausführung dieses Befehls erstellt Deployment Manager eine Bereitstellung mit der von Ihnen angegebenen Vorlage. Mit Google Cloud Platform Console oder dem gcloud-Tool können Sie prüfen, ob die Bereitstellung erstellt wurde. Weitere Informationen zur Anzeige einer Bereitstellung finden Sie unter Manifest anzeigen.

Weitere Informationen

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

Feedback geben zu...

Cloud Deployment Manager-Dokumentation