这是我的Ansible jinja模板的摘录,其中填充了特定于环境的模板。
docker_compose_mq: <string-passed from Jenkins>
docker_compose_profiles: "string"

{% if "{{ risk_docker_compose_mq }}" == "string" %}
  {% "{{ risk_docker_compose_profiles: "string1" }}" %}
{% endif %}


我几乎可以确定这与转义引号有关,但我一生无法解决我做错的事情,有什么想法吗?

评论

您可以尝试一下gist.github.com/halberom/794c06598f40ccc31560吗?

这也没有运气-确信我的Ansible设置的另一方面肯定有问题... @ 030

#1 楼

语法失败是由于{{...}}语句块中存在{%...%}表达式块(通常用于用相应的内容填充模板输出)引起的。

我仅使用独立的jinja2模板,所以我我不能100%确定这是否也适用于Ansible jinja模板,但我怀疑是这样。在Jinja2 {%...%}语句块中,直接引用变量(并且变量分配在{% set ...%}语句中完成),因此您可能需要遵循以下原则:

{% set docker_compose_mq = <string-passed from Jenkins> %}
{% set docker_compose_profiles = "string" %}

{% if risk_docker_compose_mq == "string" %}
  {% set risk_docker_compose_profiles = "string1" %}
{% endif %}


评论


不幸的是没有解决。也许是在我的Ansible庄园中更深的地方导致了这些问题。

– jto
18年5月29日在12:36

#2 楼

语法如下:

{% if backup_dest[0:1]  == "/" %}


=>该脚本测试“ backup_dest”的第一个字符是否为“ /”

{% if variable == "blabla" %}


=>这一项测试“变量”是否等于“ blabla”

注意事项