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

Ansible Tower Survey逗号分隔文件名转换与循环拷贝实现问题

Ansible Tower Survey 逗号分隔文件名参数处理方案

现有报错修复

你遇到的模板渲染错误由两个核心问题导致:

  • YAML语法错误:set_fact模块下的变量没有缩进,不符合YAML层级要求
  • 路径拼接语法错误:{{standard_path \\ item }}写法错误,同时拆分后的文件名可能带有前后空格(用户输入逗号后带空格),需要提前处理

完整实现逻辑

前置Survey配置

在Ansible Tower作业模板的Survey中新增一个单行文本输入项,变量名设为input_file_list,提示用户输入逗号分隔的文件名即可,支持1-5个文件输入。

完整Playbook代码

---
- name: 预处理Survey传入的文件名列表
  set_fact:
    # 拆分逗号分隔的字符串,同时去除每个文件名前后的多余空格
    clean_file_list: "{{ input_file_list.split(',') | map('trim') | list }}"
    # 定义目标工作目录
    standard_path: "{{ ansible_user_dir }}\\execution"

- name: 循环拷贝文件到目标目录
  win_copy:
    src: "{{ item }}"
    dest: "{{ standard_path }}\\{{ item }}"
  with_items: "{{ clean_file_list }}"

- name: 生成脚本要求的单引号逗号分隔格式参数
  set_fact:
    # 自动给每个文件名加单引号,再用逗号拼接
    formatted_file_names: "{{ clean_file_list | map('quote') | join(',') }}"
    # 拼装成脚本调用的完整参数
    script_exec_params: "-filenames {{ formatted_file_names }}"

# 后续执行脚本的步骤直接引用 {{ script_exec_params }} 即可

效果验证

如果用户在Survey中输入file1.txt, file2.txt, file3.txt,最终生成的formatted_file_names值就是'file1.txt','file2.txt','file3.txt',完全符合脚本的入参要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:21:03