[英]How to use a list in a when conditional in Ansible playbook
我正在嘗試檢查是否已添加某些掛載點,但只想查看我添加的那些存儲在added_mounts
中。
如何將變量中的列表提供給條件條件,如下例所示?
對不起,如果我的措辭沒有達到標准,但我仍在學習。
我正在使用 Ansible 2.9。
我嘗試使用vars_files
並制作一個列表並將其放在./host_vars/test/added_mounts
或./vars/added_mounts
中,但它沒有幫助。
我正在考慮嘗試在條件條件下使用循環,但在下面不起作用。
when: item.device == {{ item }}
loop: added_mounts
列表中的一項有效:
- name: "check mounted directories"
hosts: test
vars:
- added_mounts: '/dev/sda1'
tasks:
- name: Show only Mount point and device info
debug:
msg: "{{ item.mount }} - {{ item.device }}"
loop: "{{ ansible_facts.mounts }}"
loop_control:
label: "{{ item.mount }} - {{ item.device }}"
when: item.device == added_mounts
列表中的幾個項目不起作用:
- name: "check mounted directories"
hosts: test
vars:
- added_mounts:
- '/dev/sda1'
- '/dev/mapper/vg_abc-lv_abc'
tasks:
- name: Show only Mount point and device info
debug:
msg: "{{ item.mount }} - {{ item.device }}"
loop: "{{ ansible_facts.mounts }}"
loop_control:
label: "{{ item.mount }} - {{ item.device }}"
when: item.device == added_mounts
如果有人有任何提示或指出顯而易見的事情,我將不勝感激。
您已經在評論中有提示,可以在您的循環中設置一個條件來回答您的直接問題。
同時,在這種情況下,您甚至不需要條件。 您可以使用selectattr
過濾器直接從源中選擇現有的掛載。 有關參考,請參閱Ansible 中的數據操作(您實際上會在其中找到一個幾乎完全符合您的問題的示例)。
這是一個例子:
- name: Show only Mount point and device info
debug:
msg: "{{ item.mount }} - {{ item.device }}"
loop: "{{ ansible_facts.mounts | selectattr('device', 'in', added_mounts) | list }}"
loop_control:
label: "{{ item.mount }} - {{ item.device }}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.