1. 程式人生 > >Ansible常用模組-script模組

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 
版權宣告:本文為博主原創文章,轉載請附上博文連結!