Grundlagen des Deployment Managers

Die folgenden Komponenten stellen die Grundlage des Deployment Managers dar.

Konfiguration

Eine Konfiguration beschreibt alle Ressourcen, die Sie für eine einzelne Bereitstellung benötigen. Bei einer Konfiguration handelt es sich um eine Datei, die in der YAML-Syntax geschrieben ist. In ihr sind alle Ressourcen, die Sie erstellen möchten, mit ihren jeweiligen Ressourcenattributen aufgelistet. Eine Konfiguration muss einen resources:-Abschnitt enthalten, auf den die Liste der zu erstellenden Ressourcen folgt.

Jede Ressource muss diese drei Komponenten enthalten:

  • name Benutzerdefinierter String zur Identifikation dieser Ressource, z. B. my-vm, project-data-disk oder the-test-network.
  • type: Der Typ der bereitgestellten Ressource wie compute.v1.instance, compute.v1.disk. Die grundlegenden Ressourcentypen sind auf der Seite Unterstützte Ressourcentypen aufgeführt und werden dort beschrieben.
  • properties: Die Parameter für diesen Ressourcentyp. Sie müssen den Attributen für den Typ entsprechen, beispielsweise zone: asia-east1-a oder boot: true.

Dies ist eine Beispielkonfiguration:

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
    networkInterfaces:
    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT

Vorlagen

Eine Konfiguration kann Vorlagen enthalten. Diese sind wesentliche Teile einer Konfigurationsdatei und werden in einzelne Blöcke abstrahiert. Nachdem Sie eine Vorlage erstellt haben, können Sie diese nach Bedarf in allen Bereitstellungen wiederverwenden. Wenn Sie feststellen, dass Sie Konfigurationen neu schreiben, die sehr ähnliche Eigenschaften aufweisen, können Sie die gemeinsam genutzten Teile in Vorlagen umwandeln. Vorlagen sind viel flexibler als einzelne Konfigurationsdateien und sollen eine einfache Portierbarkeit in Bereitstellungen unterstützen.

Eine Vorlagendatei wird entweder in Python oder Jinja2 geschrieben. Das System von Deployment Manager interpretiert jede Vorlage rekursiv und fügt die Ergebnisse direkt in die Konfigurationsdatei ein. Somit führt die Interpretation jeder Vorlage am Ende zur gleichen YAML-Syntax für Ressourcen wie die oben für die Konfigurationsdatei selbst definierte.

Wie eine einfache Vorlage erstellt wird, erfahren Sie unter Grundlegende Vorlage erstellen.

Konfigurationen werden als vollständig erweitert oder nicht erweitert beschrieben. Eine vollständig erweiterte Konfiguration enthält alle Ressourcen und Eigenschaften der Bereitstellung, einschließlich aller Inhalte von importierten Vorlagendateien. Beispiel: Sie würden eine nicht erweiterte Konfiguration bereitstellen, wenn Sie diese Vorlage verwenden:

imports:
- path: vm_template.jinja

resources:
- name: vm-instance
  type: vm_template.jinja
  properties:
    zone: us-central1-a
    project: myproject

Nach der Erweiterung enthält Ihre Konfigurationsdatei den Inhalt aller Ihrer Vorlagen und sieht aus wie folgt:

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
        networkInterfaces:
        - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
    accessConfigs:
    - name: External NAT
      type: ONE_TO_ONE_NAT

Ressource

Eine Ressource stellt eine einzelne API-Ressource dar. Dies kann eine API-Ressource sein, die von einem von Google verwalteten Basistyp oder von einem Typanbieter bereitgestellt wird. Beispielsweise ist eine Compute Engine-Instanz oder eine Cloud SQL-Instanz eine einzelne Ressource.

Um eine Ressource anzugeben, legen Sie einen Typ für diese Ressource fest. Im nachstehenden Abschnitt "Typen" erhalten Sie nähere Informationen hierzu.

Typen

Um eine Ressource in Deployment Manager zu erstellen, müssen Sie ein type angeben. Ein Typ kann eine einzelne API-Ressource darstellen. Dabei handelt es sich um einen Basistyp. Er kann aber auch einen Satz von Ressourcen darstellen und wird dann als zusammengesetzter Typ bezeichnet. Alle so festgelegten Ressourcen werden als Teil der Bereitstellung erstellt.

So erstellen Sie beispielsweise eine Compute Engine-VM-Instanz, indem Sie den entsprechenden Basistyp in Ihrer Konfiguration angeben:

resources:
- name: the-first-vm
  type: compute.v1.instance # The type of resource to deploy
  ...

Deployment Manager enthält eine Liste der Basistypen, die von Google verwaltet werden, und die Sie sofort verwenden können. Eine Liste dieser Typen finden Sie unter Unterstützte Ressourcentypen und -eigenschaften.

Basistypen und Typanbieter

Ein Basistyp erstellt eine einzelne einfache Ressource. Zu den Basistypen von Google gehören beispielsweise compute.v1.instance, storage.v1.bucket und sqladmin.v1beta4.database, die alle von der Compute Engine V1 API, der Cloud Storage V1 API und der Cloud SQL v1beta4 Admin API bereitgestellt werden.

Basistypen werden auch von einer RESTful API unterstützt, die CRUD-Vorgänge (Create, Read, Update und Delete = Erstellen, Lesen, Aktualisieren und Löschen) unterstützt. Sie können zusätzliche Basistypen erstellen, indem Sie einen Typanbieter hinzufügen, wenn die Google-eigenen Typen alleine nicht Ihren Anforderungen entsprechen. Bei der Erstellung eines Typanbieters werden alle Ressourcen einer API als Basistypen verfügbar gemacht, die Sie verwenden können. Damit Sie einen Typanbieter erstellen können, müssen Sie ein API-Deskriptor-Dokument bereitstellen, z. B. eine OpenAPI-Spezifikation oder Google Discovery, alle erforderlichen Eingabezuordnungen für die API anpassen und den Typ bei Deployment Manager registrieren. Sobald ein Typanbieter einmal erstellt wurde, können Sie und andere Nutzer mit Zugriff auf Ihr Projekt alle Typen verwenden, die vom Typanbieter bereitgestellt werden.

Wenn Sie einen Typanbieter hinzufügen, werden alle Ressourcen, die von der API bereitgestellt und von der RESTful-Schnittstelle mit CRUD-Vorgängen unterstützt werden, als Typen in Ihrer Bereitstellung angezeigt und können von Ihnen verwendet werden.

Es erfordert fortgeschrittene Kenntnisse, um einen eigenen Typanbieter zu erstellen. Google empfiehlt dies nur für den Fall, dass Sie sehr gut mit der API vertraut sind, die Sie integrieren möchten.

Informationen zur Erstellung eines Typanbieters finden Sie unter Integration mit Deployment Manager.

Wenn Sie einen Basistyp in Ihren Vorlagen oder Konfigurationen aufrufen möchten, verwenden Sie je nach Typ eine der folgenden Syntaxen.

  • Für von Google verwaltete Basistypen verwenden Sie:

    type: [API].[VERSION].[RESOURCE]
    

    z. B. compute.v1.instance.

  • Für von Google verwaltete Typanbieter (Beta) verwenden Sie:

    type: gcp-types/[PROVIDER]:[RESOURCE]
    

    Eine Liste der unterstützten Typanbieter finden Sie unter Unterstützte Google Cloud-Typanbieter.

  • Für Basistypen, die durch einen Typanbieter bereitgestellt werden, verwenden Sie:

    type: [PROJECT_ID]/[TYPE_PROVIDER]:[COLLECTION]
    

    Dabei ist [COLLECTION] der Pfad zur bereitzustellenden API-Ressource.

Zusammengesetzte Typen

Ein zusammengesetzter Typ enthält eine oder mehrere Vorlagen, die für die Zusammenarbeit vorkonfiguriert sind. Diese Vorlagen können in einer Bereitstellung zu einem Satz von Basistypen erweitert werden. Zusammengesetzte Typen sind im Wesentlichen gehostete Vorlagen, die Sie Deployment Manager hinzufügen können. Sie können zusammengesetzte Typen für gemeinsame Lösungen erstellen, damit die Lösung einfach wiederverwendbar ist. Auch komplexere Konfigurationen sind für eine künftige Wiederverwendung möglich.

Beispiel: Sie können einen zusammengesetzten Typ erstellen, der eine Instanzgruppe zum Netzwerklastenausgleich bereitstellt. Ein Netzwerklastenausgleich erfordert mehrere Google Cloud-Ressourcen und einige Konfigurationen zwischen den Ressourcen. Sie können also diese Ressourcen in einer Konfiguration einmalig einrichten und diesen Typ dann in Deployment Manager registrieren. Anschließend können Sie und andere Nutzer mit Zugriff auf Ihr Projekt diesen Typ aufrufen und in zukünftigen Konfigurationen verwenden.

So rufen Sie einen zusammengesetzten Typ in Ihrer Konfiguration auf:

type: [PROJECT_ID]/composite:[TYPE_NAME]

Beispiel:

resources:
- name: my-composite-type
  type: myproject/composite:example-composite-type

Weitere Informationen zur Erstellung eines zusammengesetzten Typs finden Sie unter Zusammengesetzten Typ in Deployment Manager hinzufügen.

Manifest

Ein Manifest ist ein schreibgeschütztes Objekt, dass die ursprüngliche Konfiguration von Ihnen, einschließlich importierter Vorlagen, und die vollständig expandierte, von Deployment Manager erstellte Ressourcenliste beinhaltet. Immer dann, wenn Sie eine Bereitstellung aktualisieren, erstellt Deployment Manager eine neue Manifest-Datei, um den neuen Status der Bereitstellung widerzuspiegeln. Wenn ein Problem einer Bereitstellung gelöst werden soll, ist es nützlich, das Manifest zu betrachten.

Weitere Informationen finden Sie unter Manifest ansehen.

Bereitstellung

Eine Bereitstellung ist eine Sammlung von Ressourcen, die unter Verwendung einer Konfiguration zusammen bereitgestellt und verwaltet werden.

Weitere Informationen erhalten Sie unter Bereitstellung erstellen.

Weitere Informationen