如何使用带变量的通配符

时间:2016-07-23 15:07:57

标签: ansible ansible-playbook

我想根据主机名列出文件。但问题是我无法正确使用带变量的通配符。有人建议我这样做。

    ---
    - 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

1 个答案:

答案 0 :(得分:0)

如果你的问题为什么*不会扩展?,那么:

command模块:

  

命令模块获取命令名称,后跟空格分隔的参数列表。给定的命令将在所有选定的节点上执行。它不会通过shell处理,所以像$ HOME这样的变量和诸如"<",">"," |"等操作,以及"&安培;"将无法正常工作

shell模块:

  

shell模块获取命令名称,后跟空格分隔的参数列表。它几乎与命令模块完全相同,但是通过远程节点上的shell(/ bin / sh)运行命令。

因此,如果您需要任何shell技巧,例如通配符扩展或访问环境变量,请使用shell模块。