Vorlage als zusammengesetzten Typ hinzufügen

Auf dieser Seite wird gezeigt, 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.

Hinweis

  • Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie das gcloud-Befehlszeilentool.
  • Wenn Sie die API-Beispiele in dieser Anleitung verwenden möchten, richten Sie den API-Zugriff ein.
  • Verwenden Sie die V2Beta API für die API-Beispiele in dieser Anleitung.

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 des Deployments rekursiv.

Ein zusammengesetzter Typ besteht aus:

  • Übergeordnete Vorlage: Die übergeordnete Jinja- oder Python-Vorlage, die während der Erweiterung beim Aufruf des Typs ausgeführt wird.
  • Schema: Die JSON-Schemadatei mit Informationen zur übergeordneten Vorlage und zu allen definierten untergeordneten Importen.
  • Importierte Dateien: Alle weiteren für die Ausführung erforderlichen Dateien wie Hilfsdateien, untergeordnete Vorlagen und relevante Schemas für die untergeordneten Vorlagen, sofern vorhanden. Diese sind optional. Ein 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 einen zusammengesetzten Typ mithilfe von gcloud oder der API.

Weitere Informationen finden Sie in dem Beispiel zu Erstellung und 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 der gcloud CLI 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] ist der Name, mit dem Sie diesen Typ aufrufen.
  • [TOP_LEVEL_TEMPLATE] ist der relative Pfad zu der übergeordneten Vorlage, die diesen Typ beschreibt.

API

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

  • 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 im Einzelnen:

  • Projekteditoren und -betrachter sowie Typeditoren können Typen erstellen und verwenden, die für dieses Projekt verfügbar sind.
  • 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 über die Google Cloud CLI. Anstatt eine übergeordnete Konfiguration zu erstellen, generiert die gcloud CLI automatisch eine übergeordnete 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

Mit dem Flag --properties können Sie außerdem Attribute des zusammengesetzten Typs festlegen:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm \
    --properties zone:us-central1-a

Beachten Sie:

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

  • Bei booleschen Werten wird die Groß- und Kleinschreibung nicht berücksichtigt. TRUE, true und True werden also gleich behandelt.

  • Sie müssen alle erforderlichen Attribute übergeben, die vom zusammengesetzten Typ definiert werden, d. h. Sie können nicht nur eine Teilmenge der Attribute bereitstellen. Wenn bestimmte Attribute Standardwerte haben, können Sie das jeweilige Attribut in der Befehlszeile weglassen.

Wenn Sie mehrere Attribute festlegen 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 ein Deployment und verwendet dazu den von Ihnen angegebenen zusammengesetzten Typ. Sie können feststellen, ob die Bereitstellung mit der Google Cloud Console oder der gcloud CLI erstellt wurde. Weitere Informationen zur Anzeige einer Bereitstellung finden Sie unter Manifest anzeigen.

Beispiel: Zusammengesetzten Typ erstellen

Deployment Manager bietet viele Beispielkonfigurationen aus der GitHub-Repository von Deployment Manager die Sie als zusammengesetzte Typen verwenden können. In diesem Beispiel fügen Sie einen zusammengesetzten Typ hinzu, der für mehrere Zonen in einer einzelnen Region einen Hochverfügbarkeitsdienst mit Load Balancing 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. Herunterladen Python- und Schema-Dateien aus dem GitHub-Verzeichnis. 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 mit dem Namen 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 prüfen, ob 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 dabei [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 als 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!

Weitere Informationen