Ansible:从目录列表中过滤掉现有的目录

时间:2017-12-12 23:48:42

标签: linux ansible provisioning ansible-facts

我试图创建一个Ansible playbook来检查目录列表,并过滤该列表只包含现有目录,并将该列表存储到变量(事实?)。除了存储已过滤的现有目录列表之外,我还想将第一个找到的现有目录存储到不同的变量中。

我在工作上遇到一些困难,觉得我觉得应该更难。有什么建议?

- 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

1 个答案:

答案 0 :(得分:1)

我认为你几乎可以使用它,但可能需要在剧本中进行一些更改,如下面的数组中收集的结果:


  - 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