繁体   English   中英

Ansible任务中的条件jinja2 ipaddr过滤器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM