Ansible中Playbook Vars的条件设置

时间:2016-06-10 14:16:48

标签: ansible jinja2

我希望做类似的事情:

vars:
    foo: 'bar'
    bar: 'foo'
    foo_bar: if '{{ foobar }}' == "bar" then "baz" else "zap

但是对于我的生活,我无法弄明白这样做的jinja模板。我还希望用户能够使用foo_bar在命令行上分配--extra-vars

1 个答案:

答案 0 :(得分:0)

最干净的解决方案是使用带有默认值的字典:

vars:
    foo: 'bar'
    bar: 'foo'
    foo_bar_dict:
        bar: 'baz'
    foo_bar: "{{ foo_bar_dict[foobar] | default('zap') }}"

现在,如果foobar == 'baz'获得了正确的结果,并且它没有默认(否则)为" zap"。最后,如果我在命令行--extra-vars "foo_bar=zip" then that overrides every thing and foo_bar == zip`。

上覆盖它