我想根据主机名列出文件。但问题是我无法正确使用带变量的通配符。有人建议我这样做。
---
- hosts: local
become_user: yes
vars:
filename: /root/stuff
tasks:
- name: list files
action: command ls -lrt {{ filename }}/'*{{ansible_hostname}}'
register: listfiles
- debug: var=listfiles
答案 0 :(得分:0)
如果你的问题为什么*不会扩展?,那么:
command
模块:
命令模块获取命令名称,后跟空格分隔的参数列表。给定的命令将在所有选定的节点上执行。它不会通过shell处理,所以像$ HOME这样的变量和诸如"<",">"," |"等操作,以及"&安培;"将无法正常工作
shell
模块:
shell模块获取命令名称,后跟空格分隔的参数列表。它几乎与命令模块完全相同,但是通过远程节点上的shell(/ bin / sh)运行命令。
因此,如果您需要任何shell技巧,例如通配符扩展或访问环境变量,请使用shell
模块。