我有一个部署管理器模板/架构,我想根据我调用的 template.yaml 动态包含 cloud-init 的不同启动脚本选项。在我的 template.jinja 中,我有:
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) }}
所有导入都包含在最终输出中,但是其中的 jinja2 未被处理,它留下了 {{ env["name"] }} 之类的内容,导致 cloud-init 失败。在 GCP 控制台中,扩展配置如下所示:
systemctl daemon-reload
systemctl enable {{ env["name"] }}
systemctl start {{ env["name"] }}
显然 cloud-init 不知道如何处理。
有没有办法强制为 jinja 处理这些导入而不是仅仅插入原始内容?
答案1
样本中有一个例子:
- 这个 jinja 文件:
- 在 VM 元数据键中呈现: