
Ich habe eine Vorlage/ein Schema für den Deployment Manager und möchte dynamisch verschiedene Startskriptoptionen für Cloud-Init einbinden, je nachdem, welche Datei template.yaml ich aufrufe. In meiner template.jinja habe ich:
metadata:
items:
- key: startup-script
value: |
{{ imports['startup-script-pre']|indent(14, true) }}
{{ imports['startup-script-custom']|indent(14, true) }}
{{ imports['startup-script-post']|indent(14, true) }}
Alle Importe sind in der endgültigen Ausgabe enthalten, das darin enthaltene Jinja2 wird jedoch nicht verarbeitet. Es bleiben Dinge wie {{ env["name"] }} darin, an denen Cloud-Init fehlschlagen kann. In der GCP-Konsole sieht die erweiterte Konfiguration folgendermaßen aus:
systemctl daemon-reload
systemctl enable {{ env["name"] }}
systemctl start {{ env["name"] }}
und Cloud-Init weiß offensichtlich nicht, wie es damit umgehen soll.
Gibt es eine Möglichkeit, die Verarbeitung dieser Importe für Jinja zu erzwingen, anstatt sie einfach im Rohzustand einzufügen?
Antwort1
In den Beispielen finden Sie ein Beispiel:
- Diese Jinja-Datei:
- Wird in einem VM-Metadatenschlüssel gerendert: