我正在使用Ansible和Jinja2模板,这是一个我无法在Ansible的文档中找到解决方案或浏览Jinja2示例的场景 . 这是我想在Ansible中实现的逻辑:
if {{ existing_ansible_var }} == "string1"
new_ansible_var = "a"
else if {{ existing_ansible_var }} == "string2"
new_ansible_var = "b"
<...>
else
new_ansible_var = ""
我可以通过组合几种技术来实现这一点,这里的变量赋值:Set variable in jinja,这里的条件比较:http://jinja.pocoo.org/docs/dev/templates/#if-expression,以及这里的默认过滤器:https://docs.ansible.com/playbooks_filters.html#defaulting-undefined-variables,
......但我觉得这太过分了 . 有更简单的方法吗?
3 回答
如果您只想根据
existing_ansible_var
的值在模板中输出值,您只需使用dict并将其与existing_ansible_var
一起输入 .您可以使用相同的方式定义新变量:
如果
existing_ansible_var
可能不一定被定义,你需要用你的dict中不存在的default()
来捕获它:你也可以在剧本中定义它,然后在模板中使用
new_ansible_var
:像这样的东西会起作用,但它很难看 . 正如@podarok在他的回答中提到的那样,根据你正在尝试做的事情,这可能是不必要的:
等等
你不需要设置var,因为我猜你以后尝试为某些条件设置var . 只要在那里做条件就好
并获得利润