Ansible常用模組-script模組
一、概述
script 模組可以幫助我們在遠端主機上執行 ansible 管理主機上的指令碼,也就是說,指令碼一直存在於 ansible 管理主機本地,不需要手動拷貝到遠端主機後再執行。
學習此模組之前,請先學習 command 模組。
二、常用引數
free_form引數 :必須引數,指定需要執行的指令碼,指令碼位於 ansible 管理主機本地,並沒有具體的一個引數名叫 free_form,具體解釋請參考 command 模組。
chdir引數 : 此引數的作用就是指定一個遠端主機中的目錄,在執行對應的指令碼之前,會先進入到 chdir 引數指定的目錄中。
creates引數 :使用此引數指定一個遠端主機中的檔案,當指定的檔案存在時,就不執行對應指令碼,可參考 command 模組中的解釋。
removes引數 :使用此引數指定一個遠端主機中的檔案,當指定的檔案不存在時,就不執行對應指令碼,可參考 command 模組中的解釋。
三、示例
[[email protected] ~]# ansible ansible-demo3 -m script -a "chdir=/opt /testdir/testscript.sh"
ansible-demo3 | SUCCESS => {
"changed": true,
"rc": 0,
"stderr": "Shared connection to ansible-demo3 closed.\r\n",
"stdout": "testscript\r\n",
"stdout_lines": [
"testscript"
]
}
其中 testscript.sh 指令碼為列印 ‘testscript’ 字串。
[[email protected] ~]# cat /testdir/testscript.sh
echo 'testscript'
上面命令表示 ansible 主機中的 /testdir/testscript.sh 指令碼將在 ansible-demo3 主機中執行,執行此指令碼之前,會先進入到 ansible-demo3 主機中的 /opt 目錄
[[email protected] ~]# ansible ansible-demo3 -m script -a "creates=/testdir/testfile1 /testdir/testscript.sh"
ansible-demo3 | SKIPPED
上面命令表示,ansible-demo3 主機中的 /testdir/testfile1檔案已經存在,ansible 主機中的 /testdir/testscript.sh 指令碼將不會在 ansible-demo3 主機中執行。
[[email protected] ~]# ls /testdir/
test testfile1 testfile2
由於 testfile1 已經存在,則 SKIPPED。
[[email protected] ~]# ansible ansible-demo3 -m script -a "removes=/testdir/testfile1 /testdir/testscript.sh"
ansible-demo3 | SUCCESS => {
"changed": true,
"rc": 0,
"stderr": "Shared connection to ansible-demo3 closed.\r\n",
"stdout": "testscript\r\n",
"stdout_lines": [
"testscript"
]
}
上面命令表示,ansible-demo3 主機中的 /testdir/testfile1 檔案存在,ansible 主機中的 /testdir/testscript.sh 指令碼則會在 ansible-demo3 主機中執行。
四、總結
本節介紹了 Ansible 常用模組之 script 模組,並舉例說明如何使用,下節我們介紹 copy 模組。
---------------------
作者:dylloveyou
來源:CSDN
原文:https://blog.csdn.net/dylloveyou/article/details/80465000
版權宣告:本文為博主原創文章,轉載請附上博文連結!