Vorlagen auf einem externen Host speichern

In diesem Dokument wird beschrieben, wie externe Vorlagen, die im Internet statt auf Ihrer lokalen Maschine gehostet werden, in Ihrer Bereitstellung verwendet werden.

Sie können Vorlagen bei einem externen Host überall im Internet speichern und diese Vorlagen von Ihrer Konfiguration aus aufrufen. Vorlagen extern zu hosten bietet gewisse Vorteile gegenüber der lokalen Speicherung:

  • Vorlagen einfach für andere freigeben
  • Die Sicherheit, dass Konfigurationen immer die aktuellste Vorlage verwenden
  • Relevante Schemas und Importe automatisch verwalten

Deployment Manager bezieht immer die aktuellste Version einer externen Vorlage, wenn Sie Ihre Konfiguration neu bereitstellen. Wenn Sie Ihre Vorlagen pflegen, werden ihre Bereitstellungen automatisch auf dem neuesten Stand sein. Deployment Manager verarbeitet auch den Import anderer abhängiger Vorlagen für Sie, wenn in der externen Vorlage auf sie verwiesen wird.

Beispiel

Diese Konfiguration importiert eine externe Vorlage:

resources:
- name: my-frontend
  type: gs://my-frontend-templates/webserver-frontend.jinja

Hinweise

  • 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.
  • Lesen Sie die Konfigurations-Dokumentation.
  • Lesen Sie die Vorlagen-Dokumentation.

Externe Vorlagen hosten

Sie können externe Vorlagen in Google Cloud Storage oder an einem öffentlich zugänglichen Speicherplatz, wie GitHub, hosten. Solange es eine URL zu der Datei gibt und Sie Zugriff auf die Vorlagen haben, kann Deployment Manager sie herunterladen. Falls die Datei ein Schema zum Import anderer Vorlagen verwendet, müssen Sie diese Vorlagen in der gleichen Basis-URL hosten.

Auf Google Cloud Storage

So hosten Sie Vorlagen in Google Cloud Storage:

  1. Erstellen Sie einen Bucket für die Vorlagen oder verwenden Sie einen bestehenden Bucket.
  2. Laden Sie Ihre Vorlagen und zugehörige Vorlagendateien wie Schemas in den Bucket.
  3. Wenn Sie die Vorlagen von einem anderen Google Cloud Platform-Projekt verwenden möchten, als dem, zu dem die Vorlagen gehören, stellen Sie die Zugriffssteuerung so ein, dass der Zugriff erlaubt ist.

Durch das Hosten von Vorlagen in Google Cloud Storage können Sie steuern, wer Zugriff auf die Vorlagen hat, da Sie Optionen zur Zugriffssteuerung für den jeweiligen Cloud Storage-Bucket oder die spezifische Vorlage festlegen können.

Im Gegensatz dazu müssen Vorlagen, die auf anderen, öffentlich zugänglichen URLs gehostet werden, allgemein verfügbar sein.

Auf einer öffentlich zugänglichen URL

Alternativ können Sie externe Vorlagen außerhalb von Google Cloud Storage hosten, solange die Vorlagen öffentlich zugänglich sind. Beispielsweise können Sie Vorlagen auf GitHub hosten und mit der GitHub-URL auf die Vorlagen verweisen.

Speziell für GitHub müssen Sie die unveränderte GitHub-URL angeben, sodass Deployment Manager die Vorlage statt der HTML-Seite von GitHub bezieht. Eine unveränderte URL sieht beispielsweise so aus:

https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/jinja/vm_template.jinja

Eine externe Vorlage aufrufen

Eine externe Vorlage wird so aufgerufen wie eine lokale Vorlage. Als Typ muss dabei aber die vollständige URL zu der Vorlage angegeben werden. Beispiel:

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

Für eine GitHub-URL:

resources:
- name: my-salt-cluster
  type: https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/vm_template.jinja

Wenn eine externe Vorlage andere Vorlagen importiert oder wenn ein zugehöriges Schema vorhanden ist, können Sie die zugehörigen Dateien im selben Verzeichnis oder relativen Unterverzeichnis speichern und diese anderen Vorlagen mit einer relativen URL einschließen. Deployment Manager sucht nach diesen anderen Vorlagen und verwendet dazu den relativen Pfad, der auf der Basis-URL basiert.

Falls Ihre Konfiguration beispielsweise so aussieht:

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

Außerdem gab es eine Schemadatei mit dem Namen salt_cluster.jinja.schema, die diese Dateien importierte:

imports:
- path: minion.py
- path: master.py
- path: examples/source/example.py

Deployment Manager lädt automatisch alle notwendigen Dateien für diese Vorlage herunter und importiert sie.