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