簡體   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