使用Ansible win_file循环删除目录失败问题求助
问题原因及解决方法
原因
你在删除任务里的loop写法出了问题:
loop: - '{{ paths_to_delete }}'
这种写法是把paths_to_delete这个完整列表当成单个元素塞进循环里,相当于让win_file模块去处理一个长得像[C:\xxx, C:\xxx...]的字符串路径,这显然是无效路径,所以报错。而复制任务里loop: '{{ paths_to_copy }}'是直接遍历列表的每个元素,因此能正常循环执行。
解决方法
把删除任务的loop改成直接引用paths_to_delete列表即可,不需要额外加-:
- name: clean up temporary copied directories win_file: path: '{{ item }}' state: absent loop: '{{ paths_to_delete }}'
逻辑说明
paths_to_delete通过json_query('results[*].dest')提取后已经是一个包含4个路径的列表,直接用loop: '{{ paths_to_delete }}'就能让win_file逐个处理每个路径,和复制任务的循环逻辑完全一致。
原报错信息:
"msg": "Get-AnsibleParam: Parameter 'path' has an invalid path '[C:\folders\to\copy\1','C:\folders\to\copy\2','C:\folders\to\copy\3','C:\folders\to\copy\4'] specified."
内容的提问来源于stack exchange,提问作者Marvelous
相关产品推荐
相关产品推荐

