首页 > 解决方案 > 可以在角色变量文件中使用 Jinja2 表达式

问题描述

我想知道是否可以在 vars 文件中使用 Jinja2 {% if %} 表达式?

所以说我有:

az:
 az1: foo
 az2: bar
 az3: foobar

{% if az == az['az1'] %}
  floating_ip_pool = bar
{% endif %}

基本上,我试图避免每次都设置这些变量,因为它们总是基于 az.

谢谢。

标签: ansiblejinja2ansible-2.xansible-template

解决方案


这不是有效的语法。vars 文件必须首先被解析为 YAML 文档,并且引入 Jinja 语法会导致某些内容不再是有效的 YAML。

你可以这样做:

az:
 az1: foo
 az2: bar
 az3: foobar

floating_ip_pool: "{% if target_az == az['az1'] %}bar{% endif %}"

推荐阅读