我正在尝试使用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 }}