ansible筆記(5) 命令類模組

2022-03-21 17:34:52 字數 3019 閱讀 7915

command 模組可以幫助我們在遠端主機上執行命令。

注意:使用 command 模組在遠端主機中執行命令時,不會經過遠端主機的 shell 處理,在使用 command 模組時,如果需要執行的命令中含有重定向、管道符等操作時,這些符號也會失效,比如」<」, 「>」, 「|」, 「;」 和 「&」 這些符號,如果你需要這些功能,可以參考後面介紹的 shell 模組。還有一點需要注意,如果遠端節點是 windows 作業系統,則需要使用 win_command 模組。

執行 ansible 時,不加 -m 預設使用 command ,可以在 /etc/ansible/ansible.cfg 中修改。

# default module name for /usr/bin/ansible

#module_name = command

free_form引數 :必須引數,指定需要遠端執行的命令。需要說明一點,free_form 引數與其他引數(如果想要使用乙個引數,那麼則需要為這個引數賦值,也就是name=value模式)並不相同。比如,當我們想要在遠端主機上執行 ls 命令時,我們並不需要寫成」free_form=ls」 ,這樣寫反而是錯誤的,因為並沒有任何引數的名字是 free_form,當我們想要在遠端主機中執行 ls 命令時,直接寫成 ls 即可。因為 command 模組的作用是執行命令,所以,任何乙個可以在遠端主機上執行的命令都可以被稱為 free_form。

[root@tlur31drk8wk ~]# ansible all -m command -a "ls"

192.168.161.22 | success | rc=0 >>

anaconda-ks.cfg

dead.letter

desktop

documents

downloads

chdir引數 : 此引數的作用就是指定乙個目錄,在執行對應的命令之前,會先進入到 chdir 引數指定的目錄中。

[root@tlur31drk8wk ~]# ansible all -m command -a "chdir=/opt ls"

192.168.161.97 | success | rc=0 >>

1.sh

hdltmp

hdltmp_20190625.zip

creates引數 :看到 creates,你可能會從字面上理解這個引數,但是使用這個引數並不會幫助我們建立檔案,它的作用是當指定的檔案存在時,就不執行對應命令,比如,如果 /testdir/test檔案存在,就不執行我們指定的命令。

[root@tlur31drk8wk ~]# ansible all -m command -a "creates=/opt/1.sh echo hello"

192.168.161.97 | success | rc=0 >>

skipped, since /opt/1.sh exists

[root@tlur31drk8wk ~]# ansible all -m command -a "creates=/opt/2.sh echo hello"

192.168.161.5 | success | rc=0 >>

hello

removes引數 :與 creates 引數的作用正好相反,它的作用是當指定的檔案不存在時,就不執行對應命令,比如,如果 /testdir/tests 檔案不存在,就不執行我們指定的命令,此引數並不會幫助我們刪除檔案。

[root@tlur31drk8wk ~]# ansible all -m command -a "removes=/opt/1.sh echo hello"         

192.168.161.97 | success | rc=0 >>

hello

[root@tlur31drk8wk ~]# ansible all -m command -a "removes=/opt/2.sh echo hello"

192.168.161.149 | success | rc=0 >>

skipped, since /opt/2.sh does not exist

shell 模組可以幫助我們在遠端主機上執行命令。與 command 模組不同的是,shell 模組在遠端主機中執行命令時,會經過遠端主機上的/bin/sh程式處理。

其中chdir、creates、removes引數與command中的對應引數使用方式相同,不進行舉例。

[root@tlur31drk8wk ~]# ansible all -m shell -a "ls"                                 

192.168.161.5 | success | rc=0 >>

anaconda-ks.cfg

dead.letter

desktop

chdir引數 : 此引數的作用就是指定乙個目錄,在執行對應的命令之前,會先進入到 chdir 引數指定的目錄中。

executable引數:預設情況下,shell 模組會呼叫遠端主機中的 /bin/sh 去執行對應的命令,通常情況下,遠端主機中的預設 shell 都是 bash。如果你想要使用其他型別的 shell 執行命令,則可以使用此引數指定某種型別的 shell 去執行對應的命令。指定 shell 檔案時,需要使用絕對路徑。

script 模組可以幫助我們在遠端主機上執行 ansible 管理主機上的指令碼,也就是說,指令碼一直存在於 ansible 管理主機本地,不需要手動拷貝到遠端主機後再執行。

其中chdir、creates、removes引數與command中的對應引數使用方式相同,不進行舉例。

[root@tlur31drk8wk ~]# ansible all -m script -a "test.sh"

192.168.161.51 | success =>

其中,test.sh內容為輸出helloworld字元竄

chdir引數 : 此引數的作用就是指定乙個遠端主機中的目錄,在執行對應的指令碼之前,會先進入到 chdir 引數指定的目錄中。

ansible筆記(6) 常用模組之命令類模組

ansible筆記 6 常用模組之命令類模組 command模組 command模組可以幫助我們在遠端主機上執行命令 注意 使用command模組在遠端主機中執行命令時,不會經過遠端主機的shell處理,在使用command模組時,如果需要執行的命令中含有重定向 管道符等操作時,這些符號也會失效,比...

Ansible常用模組之命令類模組

在遠端節點上執行命令 root tiandong ansible all m command a ls 在遠端主機上執行ls命令。進入到 tmp目錄下面,然後執行 ls命令 存在 tmp copy檔案不執行 echo test 命令,不存在才執行 echo test 命令 root tiandong...

Ansible 命令執行模組(學習筆記九)

命令執行模組有四個 command raw shell script 1 command為系統預設模組,使用時可以直接省略 2 轉換到別的目錄中,執行程式,chdir為command模組自帶的引數 3 command不支援管道命令 4 raw和command類似,兩個模組都是呼叫遠端主機的指令,但是...