2016-07-23 52 views
0

我想根據主機名列出文件。但問題是我無法正確使用帶有變量的通配符。可以有人在此提示我。如何在變量中使用通配符

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

如果你的問題是爲什麼*不擴展?,則:

command模塊:

命令模塊取指令名稱後面的空間分隔的參數的列表。給定的命令將在所有選定的節點上執行。它不會通過外殼進行處理,所以像$ HOME變量和操作,如 「<」, 「>」, 「|」 和 「&」 將無法正常工作

shell模塊:

shell模塊接受命令名稱後跟空格分隔參數列表。它幾乎完全像命令模塊,但通過遠程節點上的shell(/ bin/sh)運行命令。

因此,如果您需要任何shell技巧(如通配符擴展或訪問環境變量),請使用shell模塊。

+0

感謝殼在這種情況下工作正常。 – samir

+0

@samir如果答案正確,請將其標記爲已接受 –