我建立了下面的 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 查找 – 列出與模式相符的文件, 但
匹配是針對 Ansible 控制器上的本機系統檔案。若要迭代遠端節點上的檔案列表,請使用
ansible.builtin.find
模組。
在你的情況下win_find
到
根據特定條件傳回文件列表。