神社模板中的 Ansible 换行符
Ansible newline in jinja template
我正在尝试使用 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 放在下一行。引用自 Whitespace Control
"a single trailing newline is stripped if present"
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 }}
我正在尝试使用 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 放在下一行。引用自 Whitespace Control
"a single trailing newline is stripped if present"
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 }}