我创建了下面的 Ansible 脚本,在其中使用通配符检查目录是否存在,但是它失败了:
- host: windows
vars:
dir: 'c:\inetpub\wwwroot\mysite*' # without * playbook working well
tasks:
- name : check dir
win_stat:
path: "{{ dir }}"
register: dirdata
- name: check
fail:
msg: not present
when: dirdata.stat.exists == false
出现以下错误:
FAILED: => { " argument for the path is of type System.String and we were unable to convert to path: Illaegel characters in path.”}
有人能给我同样的建议吗?提前谢谢。
答案1
错误是因为 Ansible 控制节点无法在未建立连接和查找远程节点的情况下扩展远程节点上的路径。因此这是预期的行为。
有一些可以使用通配符的模块,例如fileglob lookup – 列出与模式匹配的文件, 但
匹配针对的是 Ansible 控制器上的本地系统文件。要迭代远程节点上的文件列表,请使用
ansible.builtin.find
模块。
你的情况win_find
到
根据特定标准返回文件列表。