我正在尝试将任务应用于基于ip block的主机,所以我有了这个。
- 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
任何帮助非常感谢
答案 0 :(得分:0)
你有一个错字。 ansible_all_ip4_addresses
必须为ansible_all_ipv4_addresses
,v
之前4
丢失。
除此之外,它可以使用无或2个大括号,但不能使用一个:
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 }}"