jinja模板中的可靠换行符



我正在尝试使用Ansible创建docker compose配置。我使用的是Jinja2模板。

这是jinja模板代码的一部分:

image: {% if version == "4.2" %}appname:4.2.0{% elif version == "4.0.5" %}dockerhub2:10000/appname:4.0.5{% else %}dockerhub2:10000/appname3:3.0.14{%  endif %}
container_name: {{ dir }}

我期望看到的:

image: dockerhub2:10000/appname3:3.0.14
container_name: name

我真正看到的:

image: dockerhub2:10000/appname3:3.0.14    container_name: name

我如何在这里描述换行符?

endif放在下一行。引用空白控制

"如果存在则剥离单个尾随换行符">

image: {% if version == "4.2" %}appname:4.2.0{% elif version == "4.0.5" %}dockerhub2:10000/appname:4.0.5{% else %}dockerhub2:10000/appname3:3.0.14
{%  endif %}
container_name: {{ dir }}

FWIW,您可以简化模板(并使案例易于扩展(

image: {{ image[ver] }}
container_name: {{ dir }}

如果你把数据放入字典

image:
'4.2': 'appname:4.2.0'
'4.0.5': 'dockerhub2:10000/appname:4.0.5'
default: 'dockerhub2:10000/appname3:3.0.14'
ver: "{{ (version in image.keys())|ternary(version, 'default') }}"

信用@mdaniel;下面的模板给出了相同的结果

image: {{ image.get(version, image.get('default')) }}
container_name: {{ dir }}

相关内容

  • 没有找到相关文章

最新更新