Ansible / jinja2:如果条件,则使用过滤结果

时间:2017-03-02 12:58:13

标签: ansible ansible-template

是否可以在ansible playbooks的条件下使用Jinja2过滤器的结果?

我正在尝试让这个工作,但没有成功:

{% if (item | ipv4) %}{{ item }}{% else %}{{ lookup('dig', item) }}{% endif %}}

我当前测试中的 item 设置为 localhost (可以是任何其他私有域或公共域)。

应该这样做:如果 item 是IPv4地址,则应返回地址,否则应将其“转换”(使用 dig 进行DNS查找)到IPv4地址 - 但它总是返回主机名。

有什么想法吗?

提前致谢 的Matthias

1 个答案:

答案 0 :(得分:7)

尝试

{{ item if (item | ipv4) else lookup('dig',item) }}