Vorlage als zusammengesetzten Typ hinzufügen

Auf dieser Seite wird beschrieben, wie Sie mit Deployment Manager einen zusammengesetzten Typ erstellen. Nachdem Sie einen zusammengesetzten Typ erstellt haben, können Sie diesen Typ in Ihrer Konfiguration aufrufen und Bereitstellungen erstellen.

Ein zusammengesetzter Typ besteht aus einer oder mehreren Vorlagen, die für die Zusammenarbeit konfiguriert und Deployment Manager dauerhaft hinzugefügt wurden. Nach dem Hinzufügen können Sie einen zusammengesetzten Typ so wie einen zu Google gehörenden Typ verwenden. Weitere Informationen über Typen finden Sie unter Typenübersicht.

Sie können beispielsweise einen Satz von Vorlagen erstellen, die eine verwaltete Instanzgruppe zum Netzwerklastenausgleich bereitstellen. Fügen Sie diese Vorlagen dann als zusammengesetzten Typ zu Deployment Manager hinzu. Sie können diese Vorlage dann in künftigen Konfigurationen wie jeden anderen Typ verwenden.

Weitere Informationen finden Sie unter Typen für andere Projekte freigeben.

Vorbereitung

  • Installieren Sie das gcloud-Befehlszeilentool, wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten.
  • Verwenden Sie die V2Beta-API für die API-Beispiele in diesem Handbuch.

Komponenten eines zusammengesetzten Typs

Um einen zusammengesetzten Typ zu erstellen, müssen Sie eine übergeordnete Jinja- oder Python-Vorlage besitzen und optional einen Satz von unterstützenden Dateien, die die Basistypen gegebenenfalls auflösen. Zusammengesetzte Typen können aus Ressourcen bestehen, die wiederum selbst andere zusammengesetzte Typen sind. Deployment Manager erweitert diese Typen während der Bereitstellung rekursiv.

Ein zusammengesetzter Typ besteht aus:

  • Einer übergeordneten Vorlage: Die übergeordnete Jinja- oder Python-Vorlage, die während der Erweiterung beim Typaufruf ausgeführt wird.
  • Einem Schema: Die JSON-Schemadatei beschreibt Informationen zu der übergeordneten Vorlage und allen definierten untergeordneten Importen.
  • Importierten Dateien: Alle weiteren für die Ausführung erforderlichen Dateien, wie Hilfsdateien, untergeordnete Vorlagen und relevanten Schemas für die untergeordneten Vorlagen, sofern vorhanden. Dies ist jedoch optional. Ihr zusammengesetzter Typ kann auch einfach nur eine einzige übergeordnete Vorlage enthalten.

Zusammengesetzten Typ erstellen

Sie können einen zusammengesetzten Typ erstellen, indem Sie die übergeordnete Vorlage einer Konfiguration und die zugehörigen Import- und Schemadateien registrieren. Erstellen Sie mithilfe von gcloud oder der API einen zusammengesetzten Typ.

Weitere Informationen finden Sie in dem Beispiel zur Erstellung und dem Aufruf eines zusammengesetzten Typs.

gcloud

Zur Ausführung dieses Befehls müssen Sie sich in dem Verzeichnis befinden, in dem Sie die übergeordnete Vorlage und die untergeordneten Vorlagen, die Teil dieses zusammengesetzten Typs sind, gespeichert haben.

Stellen Sie mit dem Tool gcloud eine types create-Anfrage und geben Sie die übergeordnete Vorlage sowie den gewünschten Typnamen für den Aufruf dieses zusammengesetzten Typs an. Führen Sie diesen Befehl in dem lokalen Verzeichnis aus, in dem sich Ihre Vorlagendateien befinden.

$ gcloud beta deployment-manager types create [TYPE_NAME] --template=[TOP_LEVEL_TEMPLATE]

wobei:

  • [TYPE_NAME] der Name ist, mit dem Sie diesen Typ aufrufen möchten
  • [TOP_LEVEL_TEMPLATE] der relative Pfad zu der übergeordneten Vorlage ist, die diesen Typ beschreibt.

API

Stellen Sie in der API eine POST-Anfrage, die die Felder composite und name enthält. Im Feld composite definieren Sie:

  • Das übergeordnete Schema
  • Die Inhalte der importierten Vorlagen
  • Die Inhalte der übergeordneten Vorlage

Der API-Anfragetext hat folgende Struktur:

POST https://www.googleapis.com/deploymentmanager/v2beta/projects/[PROJECT_ID]/global/compositeTypes

{
 "composite": {
  "files": {
   "schema": "[CONTENTS_OF_SCHEMA]",
   "imports": [
    {
     "name": "[TEMPLATE_FILE]",
     "content": "[CONTENTS_OF_TEMPLATE_FILE]"
    },
    {
     "name": "[ANOTHER_TEMPLATE_IF_NECESSARY]",
     "content": "[CONTENTS_OF_TEMPLATES]"
    }
   ],
   "template": "[TOP-LEVEL_TEMPLATE_CONTENTS]",
   "templateFileType": "[FILE_TYPE]"
  }
 },
 "name": "[TYPE_NAME]"
}

Ein Beispiel zum Erstellen dieser Anfrage finden Sie unter Zusammengesetzten Typ für verwaltete Instanzgruppen mit automatischer Skalierung erstellen. Weitere Informationen finden Sie in der Dokumentation zur Methode insert.

Zusammengesetzten Typ bereitstellen

Typen sind Ressourcen auf Projektbasis und gemäß den Berechtigungen zugänglich, die in der Dokumentation zur Zugriffssteuerung beschrieben sind. Das bedeutet:

  • Projekteditoren und -betrachter sowie Typeditoren können für dieses Projekt verfügbare Typen erstellen und verwenden.
  • Typbetrachter können eine Liste von Typen abrufen und die Typen verwenden, die für dieses Projekt verfügbar sind.

Sie können auch ein anderes Projekt als Typbetrachter hinzufügen, sodass dieses auf Ihre Typen zugreifen kann. Weitere Informationen finden Sie unter Typen für andere Projekte freigeben.

Nach der Registrierung eines zusammengesetzten Typs können Sie diesen ebenso aufrufen wie von Google verwaltete Typen:

types: [PROJECT_ID]/composite:[TYPE_NAME]

Beispiel:

resources:
- name: my example-resource
  type: example-project/composite:autoscaled-igm
  properties:
  ...

Zusammengesetzten Typ direkt mit Befehlszeilentool bereitstellen

Deployment Manager bietet die Möglichkeit, einen zusammengesetzten Typ direkt mit dem gcloud-Befehlszeilentool bereitzustellen. Dank dieser Funktion können Sie die Erstellung einer übergeordneten Konfiguration überspringen, denn das gcloud-Tool generiert automatisch die oberste Ebene der Konfiguration für Sie.

Mit dem folgenden Befehl wird beispielsweise ein zusammengesetzter Typ mit dem Namen autoscaled-igm bereitgestellt:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm

Sie können auch Eigenschaften Ihres zusammengesetzten Typs mit dem Flag --properties setzen:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm \
    --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 \
    --composite-type example-project/composite:autoscaled-igm \
    --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-8

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

Beispiel: Zusammengesetzten Typ erstellen

Deployment Manager bietet viele Beispielkonfigurationen aus dem Deployment Manager GitHub-Repository, die Sie als zusammengesetzte Typen verwenden können. In diesem Beispiel fügen Sie einen zusammengesetzten Typ hinzu, der einen Lastenausgleichs-Hochverfügbarkeitsdienst für mehrere Zonen in einer einzelnen Region bereitstellt. Weitere Informationen finden Sie im vollständigen Beispiel.

In diesem Beispiel ist die übergeordnete Konfigurationsdatei die Datei ha-service.py. Alle untergeordneten Vorlagen werden in die Schemadateien importiert.

  1. Laden Sie die Python- und Schemadateien aus dem GitHub-Verzeichnis herunter. Lassen Sie alle Dateien in Unterverzeichnissen und alle Diagrammdateien weg.
  2. Führen Sie im lokalen Verzeichnis, in das Sie alle Dateien heruntergeladen haben, den folgenden Befehl aus, um einen neuen zusammengesetzten Typ namens ha-service-example zu erstellen:

    gcloud beta deployment-manager types create ha-service-example --template=ha-service.py
    
  3. Rufen Sie eine Typenliste auf, um zu bestätigen, dass der Typ erfolgreich erstellt wurde:

    gcloud beta deployment-manager types list --provider composite
    
  4. Beschreiben Sie den neuen Typ:

    gcloud beta deployment-manager types describe ha-service-example --provider composite
    
  5. Erstellen Sie eine neue Konfiguration, die Ihren Typ bereitstellt. Ersetzen Sie [PROJECT_ID] durch Ihre Projekt-ID.

    resources:
    - name: ha-service-example
      type: [PROJECT_ID]/composite:ha-service-example
      properties:
        dockerImage: gcr.io/deployment-manager-examples/nodejsservicestatic
        zones:
        - us-central1-b
        - us-central1-a
    

    Speichern Sie die Konfiguration unter example-config.yaml. Beachten Sie, dass Sie nicht alle Vorlagen in Ihre Konfiguration importieren mussten.

  6. Stellen Sie Ihren neuen zusammengesetzten Typ bereit:

    gcloud deployment-manager deployments create ha-service-deployment --config example-config.yaml
    

    Die API gibt eine Liste mit Ressourcen zurück, die von dem Typ erstellt wurde:

    Waiting for create [operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5]...done.
    Create operation operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5 completed successfully.
    NAME                                            TYPE                             STATE      ERRORS  INTENT
    ha-service-deployment-lb-fr                      compute.v1.forwardingRule        COMPLETED  []
    ha-service-deployment-lb-hc                      compute.v1.httpHealthCheck       COMPLETED  []
    ha-service-deployment-lb-tp                      compute.v1.targetPool            COMPLETED  []
    ha-service-deployment-service-us-central1-a-as   compute.v1.autoscaler            COMPLETED  []
    ha-service-deployment-service-us-central1-a-igm  compute.v1.instanceGroupManager  COMPLETED  []
    ha-service-deployment-service-us-central1-a-it   compute.v1.instanceTemplate      COMPLETED  []
    ha-service-deployment-service-us-central1-b-as   compute.v1.autoscaler            COMPLETED  []
    ha-service-deployment-service-us-central1-b-igm  compute.v1.instanceGroupManager  COMPLETED  []
    ha-service-deployment-service-us-central1-b-it   compute.v1.instanceTemplate      COMPLETED  []

Herzlichen Glückwunsch, Sie haben Ihren ersten zusammengesetzten Typ erstellt!

Nächste Schritte

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

Feedback geben zu...

Cloud Deployment Manager-Dokumentation