如何在Ansible中从清单中复制多个文件?

如何在Ansible中从清单中复制多个文件?,ansible,jinja2,Ansible,Jinja2,我想使用inventory\u hostname变量记录配置文件,但它只考虑清单文件中的第一台主机,并将其配置复制到所有其他主机。(注意:所有3种配置都不同) 我的任务: -名称:记录输出 区块填充: 路径:“./output.log” 区块:| 配置文件 ------------------------------ {ansible_play_hosts_all%中的主机名为% {{host_name}} {{inventory_hostname}}.cfg {%endfor%} 我的库存文

我想使用
inventory\u hostname
变量记录配置文件,但它只考虑清单文件中的第一台主机,并将其配置复制到所有其他主机。(注意:所有3种配置都不同)

我的任务:

-名称:记录输出
区块填充:
路径:“./output.log”
区块:|
配置文件
------------------------------
{ansible_play_hosts_all%中的主机名为%
{{host_name}}
{{inventory_hostname}}.cfg
{%endfor%}
我的库存文件:

[junos]
junos-1
junos-2
junos-3

[junos:vars]
ansible_network_os=junos
ansible_connection=netconf
我的配置文件:

junos-1.cfg
junos-2.cfg
junos-3.cfg
它们是使用以下方法创建的:

- name: Generate Config
  template:
    src: ./generate_config.j2
    dest: ./{{ inventory_hostname }}.cfg

有人可以建议我如何为各自的主机复制所有配置,或者我是否可以在同一任务中的
inventory\u hostname
中循环获取配置?

只需运行完全相同的模板任务(再次…),但
委托给:localhost
,您就可以在控制器上获得相同的内容(如果我正确地理解了您试图执行的操作)您的日志任务无论如何都无法工作,因为查找仅在控制器上运行,并且模板填充是无效的remote@Zeitounator:但在“delegate_to:localhost`的情况下,当playbook运行于多个外部主机(并行执行)时,输出将被覆盖。您是否尝试过?(显然不是…)除非您有多台主机具有相同的
目录\u主机名,否则这是不可能的。如果您需要走上正轨: