我需要在所有主机组上运行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