ansible(4)--ansible的command和shell模塊


1. command模塊

功能:在遠程主機執行 shell 命令;為默認模塊,可省略 -m 選項;

注意:不支持管道命令 |

command模塊的常用參數如下:

參數 說明
chdir DIR 執行ansible時,切換到指定的目錄
creates FILE 如果文件FILE存在,則不執行命令
removes FILE 如果文件FILE存在,則執行命令
  • 示例一:command模塊基礎用法,在遠端主機執行命令:

    [root@xuzhichao ~]# ansible 192.168.20.22 -a "id"
    192.168.20.22 | CHANGED | rc=0 >>
    uid=0(root) gid=0(root) groups=0(root)
    
  • 示例二:在被控端主機切換到指定目錄,執行命令:

    [root@xuzhichao ~]# ansible 192.168.20.22 -a "chdir=/tmp pwd"
    192.168.20.22 | CHANGED | rc=0 >>
    /tmp
    
  • 示例三:creates:指定的文件存在時,不執行對應命令:

    [root@xuzhichao ~]# ansible 192.168.20.22 -a "creates=/etc/passwd ls"
    192.168.20.22 | SUCCESS | rc=0 >>
    skipped, since /etc/passwd exists   <==跳過,未執行;
    
  • 示例四:removes:與creates相反,指定的文件存在,則執行對應命令:

    [root@xuzhichao ~]# ansible 192.168.20.22 -a "removes=/etc/passwd ls"
    192.168.20.22 | CHANGED | rc=0 >>
    49857.html
    anaconda-ks.cfg
    apache-tomcat-10.0.7.tar.gz
    echo-nginx-module
    favicon.ico
    index.html
    lvs_rs.sh
    nginx-1.20.1
    nginx-1.20.1.tar.gz
    redis-4.2.0.tgz
    route.txt
    valgrind-3.15.0-11.el7.x86_64.rpm
    wordpress-3.1-zh_CN.zip
    

2. shell模塊

功能:在遠程主機執行 Shell 命令,支持管道等特殊符號的操作,比command模塊使用廣泛;

shell模塊的常用參數如下:

參數 說明
chdir DIR 執行ansible時,切換到指定的目錄
creates FILE 如果文件FILE存在,則不執行命令
removes FILE 如果文件FILE存在,則執行命令
  • shell模塊支持管道命令,在被控主機上創建用戶和密碼:

    [root@xuzhichao ~]# ansible 192.168.20.22 -m shell -a 'useradd xu1'
    192.168.20.22 | CHANGED | rc=0 >>
    
    [root@xuzhichao ~]# ansible 192.168.20.22 -m shell -a 'echo 123456 | passwd --stdin xu1'
    192.168.20.22 | CHANGED | rc=0 >>
    Changing password for user xu1.
    passwd: all authentication tokens updated successfully.
    

注意:調用bash執行命令 類似cat /tmp/stanley.md | awk -F'|' '{print $1,$2}' &> /tmp/example.txt這些復雜命令,即使使用shell也可能會失敗,解決辦法:寫到腳本中,copy到遠程,執行,再把需要的結果拉回執行命令的機器。

注意:雖然可以使用shell模塊完成絕大多數操作,但是shell模塊無法很好的保證ansible的冪等性,因此建議使用以下各個專用模塊完成特定的功能,可以保證冪等性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM