Grundlegende Konfiguration erstellen

Auf dieser Seite wird beschrieben, wie eine Konfiguration erstellt wird, die verwendet werden kann, um eine Bereitstellung zu erstellen. Mehr über Bereitstellungen können Sie unter Bereitstellung erstellen erfahren.

Eine Konfigurationsdatei definiert alle Google Cloud-Ressourcen, aus denen eine Bereitstellung besteht. Sie benötigen eine Konfigurationsdatei für das Erstellen einer Bereitstellung. Eine Konfigurationsdatei muss in der YAML-Syntax geschrieben werden.

Hinweis

Struktur einer Konfigurationsdatei

Eine Konfigurationsdatei wird im YAML-Format geschrieben und hat folgende Struktur:

#  imported templates, if applicable
imports:
  #  path relative to the configuration file
- path: path/to/template.jinja
  name: my-template
- path: path/to/another/template.py
  name: another-template

resources:
  - name: NAME_OF_RESOURCE
    type: TYPE_OF_RESOURCE
    properties:
      property-a: value
      property-b: value
      ...
      property-z: value
  - name: NAME_OF_RESOURCE
    type: TYPE_OF_RESOURCE
    properties:
      property-a: value
      property-b: value
      ...
      property-z: value

Jeder Abschnitt definiert einen anderen Teil der Bereitstellung:

  • Der Abschnitt imports ist eine Liste von Vorlagendateien, die von der Konfiguration verwendet werden. Deployment Manager erweitert rekursiv jede importierte Vorlage für Ihre endgültige Konfiguration.

  • Der Abschnitt resources ist eine Liste der Ressourcen, aus denen diese Bereitstellung besteht. Eine Ressource kann Folgendes sein:

Sie können auch andere optionale Abschnitte einfügen, z. B. die Abschnitte outputs und metadata. Mithilfe des Abschnitts outputs können Sie Daten aus Ihren Vorlagen und Konfigurationen als Ausgaben verfügbar machen, die dann von anderen Vorlagen in der gleichen Bereitstellung verwendet werden können, oder als Ausgaben für Ihre Endnutzer. Der Abschnitt metadata ermöglicht Ihnen die Verwendung anderer Features, beispielsweise zum Festlegen expliziter Abhängigkeiten zwischen Ressourcen.

In einer Konfiguration muss mindestens der Abschnitt resources deklariert werden, gefolgt von einer Liste mit Ressourcen. Andere Abschnitte sind optional.

Ressourcentyp deklarieren

Jede Ressource in Ihrer Konfiguration muss als Typ deklariert werden. Typen können ein von Google verwalteter Basistyp, ein zusammengesetzter Typ, ein Typanbieter oder eine importierte Vorlage sein.

Von Google verwaltete Basistypen sind Typen, die zu Google Cloud-Ressourcen aufgelöst werden. Eine Cloud SQL-Instanz oder ein Google Cloud Storage-Bucket sind beispielsweise von Google verwaltete Basistypen. Sie können diese Typen mithilfe der folgenden Syntax deklarieren:

type: <api>.<api-version>.<resource-type>

Eine Compute Engine-Instanz hätte folgenden Typ:

type: compute.v1.instance

Bei einer BigQuery-Datenbank könnte der Typ so aussehen:

type: bigquery.v2.dataset

Eine Liste aller unterstützten Typen rufen Sie mit dem folgenden Befehl auf:

gcloud deployment-manager types list

Eine vollständige Liste der unterstützten, von Google verwalteten Basistypen finden Sie unter Unterstützte Ressourcentypen.

Wenn Sie einen zusammengesetzten Typ oder Typanbieter verwenden, deklarieren Sie diesen so:

# Composite type

resources:
- name: my-composite-type
  type: [PROJECT]/composite:[TYPE_NAME]

Typanbieter:

# Base type

resources:
- name: my-base-type
  type: [PROJECT_ID]/[TYPE_PROVIDER_NAME]:[TYPE_NAME]

Sie können Ressourcen auch mit von Google verwalteten Typanbietern (Beta) erstellen. Eine Liste der Google Cloud-Typanbieter finden Sie unter Unterstützte Typanbieter.

Wenn Sie Vorlagen verwenden möchten, deklarieren Sie die Vorlage als Typ, wobei der Vorlagenname oder Pfad den Wert type hat. Beispielsweise importiert die folgende Konfiguration eine Vorlage mit dem Namen my_vm_template.jinja und stellt sie als Typ bereit:

imports:
- path: path/to/template/my_vm_template.jinja
  name: my-template.jinja

resources:
- name: my-first-virtual-machine
  type: my-template.jinja

Weitere Informationen zu Vorlagen finden Sie unter Basisvorlage erstellen.

Ressourcenattribute angeben

Nachdem Sie den Ressourcentyp deklariert haben, müssen Sie der Ressource auch einen name geben und die gewünschten Attribute für die Ressource festlegen. Die folgende Konfigurationsdatei definiert beispielsweise eine VM-Instanz namens vm-created-by-deployment-manager und die gewünschten Attribute. Deployment Manager verwendet diese Informationen, um eine VM-Instanz mit diesen Attributen zu erstellen.

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: vm-created-by-deployment-manager
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-11
    networkInterfaces:
    - network: global/networks/default

Zum Ermitteln der properties einer Ressource verwenden Sie die API-Dokumentation für die Ressource:

  • Sehen Sie sich das Anfrageformat in der Methode insert oder create für die Ressource an.
  • Wenn der Anfrage-URI die Zone enthält, fügen Sie den Attributen die Zone hinzu.
  • Für Arrays verwenden Sie die YAML-Listensyntax zum Auflisten von Elementen des Arrays. Wenn Sie beispielsweise eine Compute Engine-Instanz mit der API erstellen, müssen Sie im folgenden Format ein Array von Laufwerken angeben, die an die Instanz angehängt werden:

    "disks": [
      {
        "type": "PERSISTENT",
        "deviceName": "disk1",
        ...
      },
      {
        "type": "PERSISTENT",
        "deviceName": "disk2",
        ...
      }
    ]
    

    Fügen Sie diese Laufwerke der Deployment Manager-Konfiguration mit der folgenden Syntax hinzu:

    disks:
    - deviceName: disk1
      type: PERSISTENT
      ...
    - deviceName: disk2
      type: PERSISTENT
    

Sie können auch eine beschreibbare Property dieser Ressource angeben. Ob eine Property beschreibbar ist, können Sie in der API-Referenzdokumentation des Ressourcentyps nachlesen. Die Compute Engine-Referenz kennzeichnet beispielsweise bestimmte Properties, die ausschließlich ausgegeben werden. Sie können diese Properties daher nicht in der Konfiguration definieren, da sie unveränderlich sind.

Manche APIs benötigen ein Minimum an Properties, um eine Ressource zu erstellen. Ein nichtflüchtiger Speicher für Compute Engine benötigt beispielsweise den Laufwerksnamen, die Image-Quelle, die Größe der Laufwerks und so weiter, um ein neues Laufwerk zu erstellen. Weitere Informationen zu einer bestimmten Ressource finden Sie in der zugehörigen API-Referenz.

Vorlagenattribute definieren

Wenn Sie eine Vorlage für Ihre Konfiguration importieren, definieren Sie im Abschnitt properties Werte für Vorlagenattribute anstelle von Ressourcenattributen. Wenn die Vorlage keine Vorlagenattribute hat, können Sie den Abschnitt properties auch ganz weglassen.

Ressourcen aus verschiedenen Google Cloud-Diensten erstellen

Schließlich kann eine Konfigurationsdatei Ressourcen auch aus verschiedenen Google Cloud-Diensten erstellen. Zum Beispiel erstellt die folgende Konfigurationsdatei Ressourcen von Compute Engine und BigQuery:

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: vm-created-by-deployment-manager
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/family/debian-11
    networkInterfaces:
    - network: global/networks/default

- name: big-query-dataset
  type: bigquery.v2.dataset
  properties:
    datasetReference:
      datasetId: example_id

Unterstützte Ressourcentypen und -Properties

Eine vollständige Liste der unterstützten, von Google verwalteten Ressourcen finden Sie in der Dokumentation Unterstützte Ressourcentypen.

Weitere Informationen