You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible基于双列表配置批量复制重命名文件的问题咨询

问题原因

你使用的with_nested会生成两个列表的笛卡尔积,即每一个源文件都会和所有目标文件依次配对执行复制操作。所有目标路径在循环末尾都会被最后一个源文件的内容覆盖,因此最终所有目标文件内容都和最后一个源文件一致。

正确实现方案

如果使用Ansible 2.5及以上版本,推荐用loop搭配zip过滤器实现同下标位置的元素一一配对:

- name: 按下标对应复制源文件到目标路径
  copy:
    remote_src: True
    src: "{{ item.0 }}"
    dest: "{{ item.1 }}"
  when: ansible_host in groups[SERVER]
  loop: "{{ sources_files | zip(destination_files) | list }}"

如果使用的是更旧的Ansible版本,也可以用with_together参数实现同样效果:

- name: 按下标对应复制源文件到目标路径
  copy:
    remote_src: True
    src: "{{ item.0 }}"
    dest: "{{ item.1 }}"
  when: ansible_host in groups[SERVER]
  with_together:
    - "{{ sources_files }}"
    - "{{ destination_files }}"

注意事项

请确保sources_files和destination_files两个列表长度完全一致,否则长度较短的列表缺失位置会被填充为None,执行任务时会触发报错。

内容的提问来源于stack exchange,提问作者firasKoubaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 22:09:00