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

2022-06-16 07:06:12 字數 3808 閱讀 5100

ansible筆記(6

):常用模組之命令類模組

command模組

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

注意:使用command模組在遠端主機中執行命令時,不會經過遠端主機的shell處理,在使用command模組時,如果需要執行的命令中含有重定向、管道符等操作時,這些符號也會失效,比如

"<

", "

>

", "

|", "

;" 和 "&"

這些符號,如果你需要這些功能,可以參考後面介紹的shell模組,還有一點需要注意,如果遠端節點是windows作業系統,則需要使用win_command模組。

此處我們介紹一些command模組的常用引數,你可以先對這些引數有乙個大概了解,然後再看小示例。

free_form引數 :必須引數,指定需要遠端執行的命令,需要說明一點,free_form引數與其他引數並不相同,在之前的模組示例中,如果想要使用乙個引數,那麼則需要為這個引數賦值,舉個例子,之前的示例模組中,大多都有path引數,當我們需要指定要操作的檔案時,通常需要對path引數賦值,比如,path=/testdir/test,表示我們想要操作/testdir/test檔案,但是free_form引數則不同,"

free_form

"並不是乙個"

實際存在

"的引數名,比如,當我們想要在遠端主機上執行ls命令時,我們並不需要寫成"

free_form=ls

",這樣寫反而是錯誤的,因為並沒有任何引數的名字是free_form,當我們想要在遠端主機中執行ls命令時,直接寫成ls即可,這就是free_form引數的含義,因為command模組的作用是執行命令,所以,任何乙個可以在遠端主機上執行的命令都可以被稱為free_form,如果你還是不明白,看下面的小示例就行了。

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

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

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

對應上述引數的ad-hoc示例命令如下:

使用如下命令,表示在test70主機上執行ls命令,因為我使用的是root使用者,所以預設情況下,ls出的結果是test70主機中root使用者家目錄中的檔案列表。

[root@node1 data]# ansible test211 -m command -a "ls"

chdir引數表示執行命令之前,會先進入到指定的目錄中,所以如下命令表示檢視test70主機上/testdir目錄中的檔案列表

[root@node1 data]# ansible test211 -m command -a "

chdir=/data ls

"如下命令表示/testdir/test檔案如果存在於遠端主機中,則不執行對應命令,如果不存在,才執行"

echo test"命令

[root@node1 data]# ansible test211 -m command -a "

creates=/data/test echo test

"如下命令表示/testdir/test檔案如果不存在於遠端主機中,則不執行對應命令,如果存在,才執行"

echo test"命令

[root@node1 data]# ansible test211 -m command -a "

removes=/data/test echo test

"shell模組

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

學習此模組之前,請先參考本文中的command模組。

此處我們介紹一些shell模組的常用引數。

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

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

shell模組中chdir、creates、removes引數的作用與command模組中的作用都是相同的,此處不再舉例。

使用shell模組可以在遠端伺服器上執行命令,它支援管道與重定向等符號

在/usr/local/zabbix_agents_3.2.0目錄執行/usr/local/zabbix_agents_3.2.0/agent.sh指令碼

[root@node1 data]# ansible test211 -m shell -a "

chdir=/usr/local/zabbix_agents_3.2.0 executable=/bin/bash /usr/local/zabbix_agents_3.2.0/agent.sh

"# 執行/etc/init.d/zabbix_agentd restart指令碼

[root@node1 data]# ansible test211 -m shell -a "

executable=/bin/bash /etc/init.d/zabbix_agentd restart

"將test字元重定向到test211的/data目錄的test檔案中

[root@node1 data]# ansible test211 -m shell -a "

chdir=/data echo test > test

"script模組

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

學習此模組之前,請先參考本文中的command模組。

此處我們介紹一些script模組的常用引數,你可以先對這些引數有乙個大概了解,然後再看小示例。

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

上述引數對應的ad-hoc示例命令如下:

如下命令表示ansible主機中的/data/ansible.sh指令碼將在test211主機中執行,執行此指令碼之前,會先進入到test211主機中的/opt目錄

[root@node1 data]# ansible test211 -m script -a "

chdir=/opt /data/ansible.sh

"如下命令表示,如果test211主機中的/opt/testfile檔案已經存在,ansible主機中的/data/ansible.sh指令碼將不會在test70主機中執行,反之則執行。

[root@node1 data]# ansible test211 -m script -a "

creates=/opt/testfile /data/ansible.sh

"如下命令表示,如果test70主機中的/opt/testfile檔案不存在,ansible主機中的/data/ansible.sh指令碼將不會在test70主機中執行,反之則執行。

[root@node1 data]# ansible test211 -m script -a "

removes=/opt/testfile /data/ansible.sh

"

ansible筆記(7) 常用模組之包管理模組

1.yum repository模組 用於遠端管理遠端主機上的yum倉庫。引數解析 name 必須引數,用於指定要操作的唯一的倉庫id,也就是.repo配置檔案中每個倉庫對應的 中括號 內的倉庫id。baseurl 此引數用於設定yum倉庫的baseurl。description 此引數用於設定倉庫...

Ansible常用模組之命令類模組

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

Ansible常用模組

1.ping模組2.ansible command模組是ansible預設模組,主要用於執行linux基礎命令,可以執行遠端伺服器命令執行 任務執行等操作。但command模組不支援變數 重定向 管道符等,這些操作需要用shell模組執行 command模組使用詳解 chdir 執行命令前,切換到目...