Ansible 在多个主机上运行 shell 模块并将输出重定向到 1 个文件



我需要在所有主机组上运行shell模块,并将寄存器变量复制到任何服务器上的文件中

注意:我不想在本地复制结果,我需要在服务器上复制

- name: date.
shell: cat /ngs/app/user/test
register: date_res
changed_when: false
- debug:
msg: "{{ ansible_play_hosts | map('extract', hostvars, 'date_res') | map(attribute='stdout') | list }}"
run_once: yes

- name: copy bulk output
copy:
content: "{{ allhost_out.stdout }}"
dest: "/ngs/app/{{ app_user }}/test"

Jinja2循环对您的案例很有帮助
ansible [core 2.13.3]上测试

- name: date.
shell: cat /ngs/app/user/test
register: date_res
changed_when: false

- name: copy bulk output
copy:
content: |
{% for host in vars['play_hosts'] %}
{{ host }} {{ hostvars[host].date_res.stdout }}
{% endfor %}
dest: "/ngs/app/{{ app_user }}/bldall"
when: inventory_hostname == host-001.example.com

host-001.example.com上放置了一个文件,其中包含:host1 file content
host-002.example.com上放置了一个包含以下内容的文件:host2 file content
复制任务中指定的主机上的输出:

host-001.example.com host1 file content
host-002.example.com host2 file content

相关内容

  • 没有找到相关文章

最新更新