ansible每个主机输出多个文件

ansible每个主机输出多个文件,ansible,Ansible,我想在多台主机上运行Ansible playbook,并将输出注册到一个变量。现在使用这个变量,我想将输出复制到单个文件。问题是,最终文件中只有一台主机的输出。如何在一个文件中逐个添加所有主机的输出。我不想使用serial=1,因为如果我们有多个主机,它会大大降低执行速度 - hosts: all remote_user: cisco connection: local gather_facts: no vars_files:

我想在多台主机上运行Ansible playbook,并将输出注册到一个变量。现在使用这个变量,我想将输出复制到单个文件。问题是,最终文件中只有一台主机的输出。如何在一个文件中逐个添加所有主机的输出。我不想使用
serial=1
,因为如果我们有多个主机,它会大大降低执行速度

-

     hosts: all
      remote_user: cisco
      connection: local
      gather_facts: no

      vars_files:
      - group_vars/passwords.yml

      tasks:
      - name: Show command collection
        ntc_show_command:
          connection: ssh
          template_dir: /ntc-ansible/ntc-templates/templates
          platform: cisco_ios
          host: "{{ inventory_hostname }}"
          username: "{{ ansible_ssh_user }}"
          password: "{{ ansible_ssh_pass }}"
          command: "{{commands}}"
        register: result

      - local_action:
          copy content="{{result.response}}" dest='/home/user/show_cmd_ouput.txt'

result
变量将在运行任务
ntc\u show\u命令的每个主机上注册为事实,因此您应该通过
hostvars
字典访问该值

- local_action:
    module: copy
    content: "{{ groups['all'] | map('extract', hostvars, 'result') | map(attribute='response') | list }}"
    dest: /home/user/show_cmd_ouput.txt
  run_once: true
您还需要
run_once
,因为该操作的运行次数与组中主机的运行次数相同