
Eu tenho um modelo/esquema do Deployment Manager e quero incluir dinamicamente diferentes opções de script de inicialização para cloud-init, dependendo do template.yaml que estou chamando. No meu template.jinja eu tenho:
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 as importações são incluídas na saída final, porém o jinja2 dentro delas não é processado, ele deixa coisas como {{ env["name"] }} lá para que o cloud-init falhe. Dentro do console do GCP, a configuração expandida se parece com:
systemctl daemon-reload
systemctl enable {{ env["name"] }}
systemctl start {{ env["name"] }}
com o qual obviamente o cloud-init não tem ideia de como lidar.
Existe uma maneira de forçar essas importações a serem processadas para jinja em vez de apenas inseridas em bruto?
Responder1
Há um exemplo nas amostras:
- Este arquivo jinja:
- É renderizado em uma chave de metadados da VM: