[英]Conditional jinja2 ipaddr filter in ansible task
我正在尝试将任务应用于基于ip块的主机,所以我已经知道了。
- name: Conditional task
debug: msg="{{ ansible_all_ipv4_addresses | ipaddr('192.168.1.0/24') | length > 0 }}"
when: { ansible_all_ip4_addresses | ipaddr('192.168.1.0/24') | length > 0 }
debug语句按预期工作,为每个主机返回正确的值,但条件不起作用,它在所有主机中执行。 如果我删除了when子句中的括号,那么我得到
ERROR! error while evaluating conditional
我试图用以下方法定义一个事实:
- set_fact:
local: "{{ ansible_all_ip4_addresses | ipaddr('192.168.1.0/24') | length > 0 }}"
但是我得到了
ERROR! One or more undefined variables: 'ansible_all_ip4_addresses' is undefined
任何帮助,不胜感激
你在那里打错字了。 ansible_all_ip4_addresses
必须为ansible_all_ipv4_addresses
,缺少4
之前的v
。
除此之外,它不支持两个大括号,但不支持两个:
when: ansible_all_ipv4_addresses | ipaddr('192.168.1.0/24') | length > 0
要么
when: "{{ ansible_all_ipv4_addresses | ipaddr('192.168.1.0/24') | length > 0 }}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.