我创建了这个 playbook 来提取从变量whitelist
中与type= ext2, ext3, ext4
匹配的任何元素开始的所有挂载点.
问题是我可以得到全部mount_points
个,但我不能用变量过滤结果.
- hosts: all
gather_facts: True
become: True
vars:
whitelist:
- /boot
- /home
- /opt
- /var
- /bin
- /usr
tasks:
- name: extract mount_points
set_fact:
mount_point: "{{ansible_facts.mounts | selectattr('fstype', 'in', ['ext2', 'ext3', 'ext4']) | map(attribute='mount') | list }}"
- debug:
var: mount_point
vars:
query: "[?starts_with(mount, whitelist)].mount"
当我执行 playbook 时,我得到了这个
ok: [ansible@controller] => {
"mount_point": [
"/",
"/boot",
"/tmp",
"/home",
"/var",
"/var/opt",
"/var/tmp",
"/var/log",
"/var/log/audit",
"/opt",
]
}
包括/tmp
,这意味着跳过了query: "[?starts_with(mount, whitelist)].mount"
,我不知道如何实现战术目标.