Eine grundlegende Konfigurationsdatei kann für einfache Arbeitslasten ausreichend sein. Für komplexere Architekturen oder für wiederverwendbare Konfigurationen sollten Sie Ihre Konfiguration in Vorlagen aufteilen.
Eine Vorlage ist eine separate Datei, die importiert und als Typ in einer Konfiguration verwendet wird. Sie können in einer Konfiguration beliebig viele Vorlagen verwenden.
Mit Vorlagen können Sie Ihre Konfiguration in verschiedene Teile aufteilen, die Sie für verschiedene Bereitstellungen verwenden und wiederverwenden können. Vorlagen können so allgemein oder spezifisch sein wie nötig. Mit Vorlagen können Sie auch Funktionen wie Vorlageneigenschaften, Umgebungsvariablen, Module und andere Vorlagenfunktionalitäten nutzen, um dynamische Konfigurations- und Vorlagendateien zu erstellen.
Im Deployment Manager-GitHub-Repository finden Sie Beispiele für Vorlagen, die Sie in Ihren eigenen Bereitstellungen verwenden können.
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.
- Informieren Sie sich, wie eine grundlegende Konfiguration erstellt wird.
Vorlagensyntax
Vorlagen können in Jinja 2.10.x oder Python 3.x geschrieben werden. Jinja lässt sich eher der YAML-Syntax zuordnen, daher ist es möglicherweise einfacher, Vorlagen in Jinja zu schreiben, wenn Sie mit YAML vertrauter sind.
Sie können Vorlagendateien auch in Python schreiben und Python dazu nutzen, Teile Ihrer Vorlagen programmgesteuert zu erstellen. Wenn Sie Python-Vorlagen verwenden, können Sie die Python-Bibliotheken nutzen, um Vorlagendefinitionen zu formatieren. Wenn Sie mit Python vertraut sind, ist dies möglicherweise das bessere Format für Sie.
Deployment Manager akzeptiert sowohl Jinja-Vorlagen als auch Python-Vorlagen. Sie können sowohl Jinja-Vorlagen als auch Python-Vorlagen in dieselbe Konfiguration importieren.
Basisvorlage erstellen
Eine Vorlage ist eine Datei, die Sie in Jinja oder Python erstellen. Angenommen, Sie haben folgende Konfigurationsdatei:
Die Konfiguration ist gültig. Sie können die Konfiguration aber weiter vereinfachen, indem Sie verschiedene Teile daraus als einzelne Vorlagen erstellen, die sich wiederverwenden lassen. Aus der obigen Beispielkonfiguration können Sie eine Vorlage erstellen, indem Sie einen Abschnitt für die betreffende Ressource herausnehmen und daraus eine neue Jinja- oder Python-Datei erstellen.
Die folgenden Snippets zeigen die Bereiche von Vorlagen, die die Bereitstellung vereinfachen können. Die vollständigen Vorlagen finden Sie unter Auf GitHub ansehen.
Jinja
Python
Ihre Python-Vorlagen müssen folgende Anforderungen erfüllen:
Die Vorlage muss eine Methode mit dem Namen
GenerateConfig(context)
odergenerate_config(context)
definieren. Wenn Sie beide Methodennamen in derselben Vorlage verwenden, hat die Methodegenerate_config()
Vorrang.Das
context
-Objekt enthält Metadaten über die Bereitstellung und Ihre Umgebung, z. B. den Namen der Bereitstellung, das aktuelle Projekt usw. Weitere Informationen zur Verwendung von implementierungsspezifischen UmgebungsvariablenDie Methode muss ein Python-Wörterbuch zurückgeben.
Ansonsten können Sie den Inhalt Ihrer Vorlage selbst bestimmen.
Beispiel
Das vollständige Python-Beispiel finden Sie im GitHub-Repository von Deployment Manager.
Vorlagen importieren
Nachdem Sie eine Vorlage erstellt haben, importieren Sie sie in Ihre Konfigurationsdatei, um sie zu verwenden.
Zum Importieren einer Vorlage müssen Sie einen Abschnitt imports
in Ihre Konfiguration einfügen, der den relativen oder absoluten Pfad des aktuellen Verzeichnisses enthält. Beispiel: Sie können die VM-Vorlage aus dem vorherigen Schritt importieren, indem Sie die folgende Zeile oben in Ihre Konfiguration einfügen.
imports:
- path: path/to/my_vm_template.jinja
Wenn Sie einen langen Dateipfad haben, können Sie ein optionales name
-Attribut als Alias für die Datei angeben. Sie können diesen Namen dann später verwenden, um auf die Vorlage zu verweisen. Wenn Sie den Namen nicht angeben, kann über den path
auf die Vorlage verwiesen werden.
imports:
- path: path/to/my_vm_template.jinja
name: my_renamed_template.jinja
Sie können den Import mehrerer Vorlagen kombinieren. Dabei ist es egal, ob die Vorlagen in Jinja oder Python geschrieben wurden.
imports:
- path: path/to/my_vm_template.jinja
name: my_renamed_template.jinja
- path: special_vm.py
Wenn Ihre Vorlage andere Vorlagen als Abhängigkeiten verwendet, importieren Sie auch die abhängigen Vorlagen in Ihre Konfiguration:
imports:
- path: path/to/my_vm_template.jinja
- path: special_vm.py
- path: base_vm.jinja
Sie können auch Textdateien importieren, um den Inhalt direkt einzufügen. Wenn Sie beispielsweise eine Datei mit dem Namen resource_type.txt mit dem folgenden String erstellt haben:
compute.v1.instance
Importieren Sie sie in Ihre Konfiguration und geben Sie den Inhalt direkt an:
imports: - path: resource_type.txt resources: - name: my-vm type: {{ imports["resource_type.txt"] }} # Resolves to "compute.v1.instance" properties: zone: us-central1-a machineType: zones/us-central1-a/machineTypes/f1-micro disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: sourceImage: projects/debian-cloud/global/images/family/debian-9 networkInterfaces: - network: global/networks/default accessConfigs: - name: External NAT type: ONE_TO_ONE_NAT
Vorlagen bereitstellen
Sobald Sie eine Vorlage importieren, verwenden Sie diese als Typ in Ihrer Konfiguration:
Jinja
Python
Wenn Sie keinen Namen für Ihre Vorlage angegeben haben, rufen Sie die Vorlage über den Vorlagenpfad auf:
imports:
- path: path/to/my_vm_template.jinja
resources:
- name: my-first-virtual-machine
type: path/to/my_vm_template.jinja
Vorlagen direkt mit dem Befehlszeilentool bereitstellen
Anstatt eine übergeordnete Konfigurationsdatei zu erstellen, bietet Deployment Manager die Möglichkeit, eine Vorlage direkt in der Google Cloud CLI bereitzustellen.
Mit der folgenden Anfrage wird beispielsweise eine Vorlage namens vm-template.jinja
bereitgestellt:
gcloud deployment-manager deployments create a-single-vm --template vm-template.jinja
Wenn Ihre Vorlage Vorlagenattribute hat, können Sie diese Attribute auch in der Befehlszeile mit dem Flag --properties
festlegen:
gcloud deployment-manager deployments create my-igm \
--template vm-template.jinja \
--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 Wertversion: \'3\'
in einfache Anführungszeichen mit Escapezeichen.Bei booleschen Werten wird die Groß- und Kleinschreibung nicht berücksichtigt.
TRUE
,true
undTrue
werden also gleich behandelt.Sie müssen alle erforderlichen Attribute übergeben, die von der Vorlage 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
--template vm-template.jinja
--properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
Nach der Ausführung dieses Befehls erstellt Deployment Manager eine Bereitstellung mit der von Ihnen angegebenen Vorlage. 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.
Weitere Informationen
- In den Cloud Foundation Toolkit-Beispielen in GitHub finden Sie Beispiele für produktionsreife Vorlagen.
- Mit Vorlageneigenschaften Inhalte weiter abstrahieren
- Projekte und Bereitstellungen durch Umgebungsvariablen mit Informationen füllen
- Vorlage dem Projekt dauerhaft als zusammengesetzten Typ hinzufügen