Ansible: - 在目录和列表中列出子目录使用每个目录名称作为变量。

时间:2017-09-28 12:39:08

标签: automation ansible devops

我想列出父目录中的所有子目录,然后将每个目录名称用作ansible中的单独变量以进行进一步操作。

1 个答案:

答案 0 :(得分:0)

请记住,通常无法将文件名用作Ansible变量。文件名可以包含字符,这些字符在变量名中是非法的。

还要记住,文件可以与已定义的变量具有相同的名称。最好在变量前添加前缀以避免冲突。

以下示例筛选有效文件名,并为变量名称添加前缀。

---
- hosts: test1

  tasks:

    - find:
        path: /etc
        file_type: file
        use_regex: yes
        patterns: "^[a-zA-Z0-9_]+$"
        recurse: no
      register: files

    - set_fact:
        "my_{{ item | basename }}": "{{ item }}"
      with_items: "{{ files.files | map(attribute='path') | list }}"

    - debug: var=my_passwd
    - debug: var=my_hosts