ansible命令執行模塊使用


ansible命令執行模塊使用

1、命令執行模塊-command

在遠程節點上運行命令。

命令模塊使用命令名稱,接上空格-的分割符作為參數使用,但是不支持管道符和變量等,如果要使用這些,那么可以使用shell模塊。

參數

必填

默認

選項

說明

Chdir

No

 

 

更換目錄

Creates

No

 

 

當文件名已經存在的時候,此步不會執行

Executable

No

 

 

換用shell執行命令,表示為一個絕對路徑

Free_form

Yes

 

 

需要執行的腳本(沒有真正的參數為free_form)

Removes

No

 

 

當文件名稱存在的時候,此步不會執行

Warn

No

True

 

如果在ansible.cfg中存在告警,如果設定了no/False,不會警告此行

1.1 列出目錄的文件

[root@ansibleserver tmp]# ansible pythonserver -a "ls -l chdir=/tmp creates=kel.conf"

SSH password:

192.168.1.60 | success | rc=0 >>

total 8

-rw------- 1 root root 29 Jan 19 15:13 kel

-rw-r--r-- 1 root root 16 Jan 19 15:13 kel.2016-01-19@15:13~

在這個里面,首先更換目錄到tmp目錄中,然后查看kel.conf是否存在,如果存在,那么命令不會執行;如果不存在,那么執行命令,在這里也可以看到,命令是必須存在的,但是沒有參數名為free_form參數

1.2 切換目錄創建文件

[root@ansibleserver tmp]# ansible pythonserver -a "touch kel.conf chdir=/tmp"

SSH password:

192.168.1.60 | success | rc=0 >>

以上的命令表示為更換目錄到tmp中,然后創建文件kel.conf

 

在使用ansible中的時候,默認的模塊是-m command,從而模塊的參數不需要填寫,直接使用即可。

1.3 不支持管道符等操作

[root@ansibleserver tmp]# ansible pythonserver -a "cat /tmp/kel.conf >/tmp/111"

SSH password:

192.168.1.60 | FAILED | rc=1 >>

cat: >/tmp/111: No such file or directory

目錄和文件都是存在的,但是依然報錯不存在目錄或者文件,從而在command命令中是不支持管道符和其他的一些操作的,在使用這些命令的時候,可以選擇使用shell模塊

2、 shell模塊

在遠程節點上執行命令。在執行命令的時候使用的是/bin/sh。

參數

必填

默認

選擇

說明

Chdir

No

 

 

修改當前目錄

Creates

No

 

 

當文件名已經存在的時候,此步不會執行

Executable

No

 

 

換用shell執行命令,表示為一個絕對路徑

Free_form

Yes

 

 

需要執行的腳本(沒有真正的參數為free_form)

Removes

No

 

 

當文件名稱存在的時候,此步不會執行

Warn

No

True

 

如果在ansible.cfg中存在告警,如果設定了no/False,不會警告此行

2.1 執行命令保存輸出

[root@ansibleserver tmp]# ansible pythonserver -m shell -a "sh /tmp/kel.sh >>/tmp/kel.log"

SSH password:

192.168.1.60 | success | rc=0 >>

執行遠程機器上的腳本,腳本目錄為/tmp/kel.sh,然后將執行命令的結果存放在路徑/tmp/kel.log中,注意在進行保存文件的時候,寫上全路徑,否則就會保存在登錄之后的默認路徑中。

2.2 換成路徑然后執行命令

[root@ansibleserver tmp]# ansible pythonserver -m shell -a "sh /tmp/kel.sh >>kelly.log chdir=/tmp"

SSH password:

192.168.1.60 | success | rc=0 >>

可以看到修改之后的目錄,然后再執行命令。

3、腳本執行模塊-script

將script傳送到遠程主機之后,執行。此模塊的執行,在遠程主機上,不需要python環境

參數

必填

默認

選擇

說明

Creates

No

 

 

當文件名已經存在的時候,此步不會執行

Free_form

Yes

 

 

需要執行的腳本(沒有真正的參數為free_form)

Removes

No

 

 

當文件名稱存在的時候,此步不會執行

3.1 在遠程主機上執行腳本

[root@ansibleserver tmp]# ansible pythonserver -m script -a "/tmp/kel.sh >/tmp/kelkel.log"

SSH password:

192.168.1.60 | success >> {

    "changed": true,

    "rc": 0,

    "stderr": "",

    "stdout": ""

}

腳本kel.sh在本機上,然后將腳本遠程傳送到pythonserver主機中,然后執行這個腳本,從而將執行的結果保存在全路徑的文件kelkel.log中,在保存文件的時候,最好用全路徑

4、 ssh命令執行模塊-raw

此模塊的執行,在遠程主機上,不需要python環境,主要是用來執行臟的ssh命令。

參數

必填

默認

選擇

說明

Free_form

Yes

 

 

需要執行的腳本(沒有真正的參數為free_form)

Removes

No

 

 

當文件名稱存在的時候,此步不會執行

主要使用raw的原因是,如果老版本的python中,那么就需要用raw;如果客戶端是路由器的話,那么沒有python模塊的話,那么就必須要使用raw模塊

raw很多地方和shell和command相似,更多推薦的地方使用的是shell和command模塊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM