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

Mat*_*ohr 4 ansible ansible-template

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

我试图让这个工作,但没有成功:

{% if (item | ipv4) %}{{ item }}{% else %}{{ lookup('dig', item) }}{% endif %}}
Run Code Online (Sandbox Code Playgroud)

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

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

任何的想法?

先谢谢马蒂亚斯

Szt*_*upY 7

尝试

{{ item if (item | ipv4) else lookup('dig',item) }}
Run Code Online (Sandbox Code Playgroud)