
Tengo una plantilla/esquema de Deployment Manager y quiero incluir dinámicamente diferentes opciones de script de inicio para cloud-init dependiendo del template.yaml al que estoy llamando. En mi plantilla.jinja tengo:
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) }}
Todas las importaciones se incluyen en el resultado final, sin embargo, el jinja2 dentro de ellas no se procesa, deja cosas como {{ env["name"] }} allí para que cloud-init falle. Dentro de la consola de GCP, la configuración expandida se ve así:
systemctl daemon-reload
systemctl enable {{ env["name"] }}
systemctl start {{ env["name"] }}
que obviamente cloud-init no tiene idea de cómo lidiar.
¿Hay alguna manera de obligar a que esas importaciones se procesen para jinja en lugar de simplemente insertarlas sin procesar?
Respuesta1
Hay un ejemplo en las muestras:
- Este archivo jinja:
- Se representa en una clave de metadatos de VM: