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 執行命令前,切換到目...