ad-hoc 是指ansible下臨時執行的一條命令,並且不需要儲存的命令,對於複雜的命令會使用playbook。ad-hoc的執行依賴於模組,ansible官方提供了大量的模組。 如:command、raw、shell、file、cron等,具體可以通過ansible-doc -l 進行檢視 。可以使用ansible-doc -s module來檢視某個模組的引數,也可以使用ansible-doc help module來檢視該模組更詳細的資訊。
1、命令說明
乙個ad-hoc命令的執行,需要按以下格式進行執行:
ansible 主機或組-m 模組名-a '模組引數' ansible引數2、後台執行
當命令執行時間比較長時,也可以放到後台執行,使用-b、-p引數,如下:
ansible all -b 3600-a "/usr/bin/long_running_operation --do-stuff" #後台執行命令3600s,-b 表示後台執行的時間ansible all -m async_status -a "jid=123456789" #檢查任務的狀態
ansible all -b 1800-p 60-a "/usr/bin/long_running_operation --do-stuff" #後台執行命令最大時間是1800s即30分鐘,-p 每60s檢查下狀態,預設15s
命令執行模組包含如下 四個模組:
注:raw模組和comand、shell 模組不同的是其沒有chdir、creates、removes引數,chdir引數的作用就是先切到chdir指定的目錄後,再執行後面的命令,這在後面很多模組裡都會有該引數 。
command模組包含如下選項:
使用chdir的示例:
ansible 192.168.1.1 -m command -a 'chdir=/tmp/test.txt touch test.file'三個命令都會返回執行成功的狀態。不過實際上只有前兩個檔案會被建立成功。ansible 192.168.1.1 -m shell -a 'chdir=/tmp/test.txt touch test2.file'
ansible 192.168.1.1 -m raw -a 'chdir=/tmp/text.txt touch test3.file'
使用raw模組的執行的結果檔案事實上也被正常建立了,不過不是在chdir指定的目錄,而是在當前執行使用者的家目錄。
creates與removes示例:
ansible 192.168.1.1 -a 'creates=/tmp/server.txt uptime' #當/tmp/server.txt檔案存在時,則不執行uptime指令
ansible 192.168.1.1 -a 'removes=/tmp/server.txt uptime' #當/tmp/server.txt檔案不存在時,則不執行uptime指令
script模組示例:
要執行的指令碼檔案script.sh內容如下:
#/bin/bashifconfig
df -ht
執行ansible指令:ansible 10.212.52.252 -m script -a 'script.sh' |egrep '>>|stdout'本文出自 「
無名小卒
」 部落格,請務必保留此出處
Ansible4 Ad hoc與命令執行模組
目錄命令執行模組 ad hoc 是指ansible下臨時執行的一條命令,並且不需要儲存的命令,對於複雜的命令會使用playbook。ad hoc的執行依賴於模組,ansible官方提供了大量的模組。如 command raw shell file cron等,具體可以通過ansible doc l ...
Ansible 小手冊系列 七(Ad hoc)
ansible提供兩種方式去完成任務,一是 ad hoc 命令,一是寫 ansible playbook。前者可以解決一些簡單的任務,後者解決較複雜的任務。ad hoc 臨時的,在ansible中是指需要快速執行,並且不需要儲存的命令。說白了就是執行簡單的命令 一條命令。定義主機清單 cat etc...
二 Ansible的Ad hoc介紹篇
稱為臨時命令,簡單說,就是在命令列介面,直接通過一條ansible命令,去指定主機執行指定指令,功能有限 例如 ansible localhost m command a df h usage ansible options 主機或主機組,被執行的客戶端裝置,必填項 option m module ...