如何使用Ansible“吸引”多个文件

时间:2019-07-31 11:15:06

标签: ansible yaml

使用Ansible,我需要从多个文件中提取内容。在一个文件中,我使用了slurp并注册了一个变量。

- name: extract nameserver from .conf file
  slurp:
    src: /opt/test/roles/bind_testing/templates/zones/example_file.it.j2
  delegate_to: 127.0.0.1
  register: file

- debug:
   msg: "{{ file['content'] | b64decode }}"

但是现在我有多个文件,因此我需要从每个文件中提取内容,一个一个地注册它们,以便以后使用sed,merging_list等操作来处理它们...

我怎么能做到这一点?

我尝试将slurp与with_fileglob指令一起使用,但是我无法注册文件...

- name: extract nameserver from .conf file
  slurp:
    src: "{{ item }}"
  with_fileglob:
    - "/opt/test/roles/bind9_domain/templates/zones/*"
  delegate_to: 127.0.0.1
  register: file

1 个答案:

答案 0 :(得分:1)

您应该只使用loop选项,该选项已配置为slurp的文件列表。检查此示例:

---
- hosts: local
  connection: local
  gather_facts: no
  tasks:
    - name: Find out what the remote machine's mounts are
      slurp:
        src: '{{ item }}'
      register: files
      loop:
        - ./files/example.json
        - ./files/op_content.json

    - debug:
        msg: "{{ item['content'] | b64decode }}"
      loop: '{{ files["results"] }}'

slurping个文件,然后遍历results以获取其内容。

希望对您有帮助。