Ansible:从目录列表中,仅过滤掉现有的目录
Ansible: from a list of directories, filter out only existing dirs
我正在尝试创建一个 Ansible 剧本,它将检查目录列表,过滤该列表以仅包含现有目录,并将该列表存储到一个变量(事实?)。除了存储现有目录的过滤列表外,我还想将第一个找到的现有目录存储到不同的变量中。
我在让它发挥作用时遇到了一些困难,我觉得我让它变得更难了。有什么建议么?
- hosts: all
vars:
my_dirs:
- "/a/"
- "/b/"
- "/c/"
tasks:
- name: Checking existing file name
stat:
path: "{{ item }}"
with_items: "{{ my_dirs }}"
register: check_file_name
- name: Set fact
set_fact:
existing_paths: "{{ item.stat.path }}"
with_items:
"{{ check_file_name.results }}"
when: item.stat.exists | default(False) | bool
我认为您几乎可以正常工作,但可能需要对剧本进行一些更改,如下面的数组中收集的结果:
- set_fact: existing_paths="{{ [] }}"
- name: Set fact
set_fact:
existing_paths: "{{ existing_paths +[item.stat.path] }}"
with_items:
"{{ check_file_name.results }}"
when: item.stat.exists
我正在尝试创建一个 Ansible 剧本,它将检查目录列表,过滤该列表以仅包含现有目录,并将该列表存储到一个变量(事实?)。除了存储现有目录的过滤列表外,我还想将第一个找到的现有目录存储到不同的变量中。
我在让它发挥作用时遇到了一些困难,我觉得我让它变得更难了。有什么建议么?
- hosts: all
vars:
my_dirs:
- "/a/"
- "/b/"
- "/c/"
tasks:
- name: Checking existing file name
stat:
path: "{{ item }}"
with_items: "{{ my_dirs }}"
register: check_file_name
- name: Set fact
set_fact:
existing_paths: "{{ item.stat.path }}"
with_items:
"{{ check_file_name.results }}"
when: item.stat.exists | default(False) | bool
我认为您几乎可以正常工作,但可能需要对剧本进行一些更改,如下面的数组中收集的结果:
- set_fact: existing_paths="{{ [] }}" - name: Set fact set_fact: existing_paths: "{{ existing_paths +[item.stat.path] }}" with_items: "{{ check_file_name.results }}" when: item.stat.exists