使用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
答案 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
以获取其内容。
希望对您有帮助。