Ansible4:Ad-hoc與命令執行模組【轉】

來源:互聯網
上載者:User

標籤:opera   hosts   參數   保留   file   通過   ref   status   檔案中   

Ad-Hoc 是指ansible下臨時執行的一條命令,並且不需要儲存的命令,對於複雜的命令會使用playbook。Ad-hoc的執行依賴於模組,ansible官方提供了大量的模組。 如:command、raw、shell、file、cron等,具體可以通過ansible-doc -l 進行查看 。可以使用ansible-doc -s module來查看某個模組的參數,也可以使用ansible-doc help module來查看該模組更詳細的資訊。

一、Ad-hoc 1、命令說明

一個ad-hoc命令的執行,需要按以下格式進行執行:

    ansible 主機或組-m 模組名-a ‘模組參數‘  ansible參數
  • 主機和組,是在/etc/ansible/hosts 裡進行指定的部分,當然動態Inventory 使用的是指令碼從外部應用裡擷取的主機;

  • 模組名,可以通過ansible-doc -l 查看目前安裝的模組,預設不指定時,使用的是command模組,具體可以查看/etc/ansible/ansible.cfg 的“#module_name = command ” 部分,預設模組可以在該設定檔中進行修改;

  • 模組參數,可以通過 “ansible-doc -s 模組名” 查看具體的用法及後面的參數;

  • ansible參數,可以通過ansible命令的協助資訊裡查看到,這裡有很多參數可以供選擇,如是否需要輸入密碼、是否sudo等。

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
二、命令執行模組

命令執行模組包含如下 四個模組:

  • command模組:該模組通過-a跟上要執行的命令可以直接執行,不過命令裡如果有帶有如下字元部分則執行不成功 “  "<", ">", "|",  "&" ;

  • shell 模組:用法基本和command一樣,不過其是通過/bin/sh進行執行,所以shell 模組可以執行任何命令,就像在本機執行一樣;

  • raw模組:用法和shell 模組一樣 ,其也可以執行任意命令,就像在本機執行一樣;

  • script模組:其是將管理端的shell 在被管理主機上執行,其原理是先將shell 複製到遠程主機,再在遠程主機上執行,原理類似於raw模組。

註:raw模組和comand、shell 模組不同的是其沒有chdir、creates、removes參數,chdir參數的作用就是先切到chdir指定的目錄後,再執行後面的命令,這在後面很多模組裡都會有該參數 。

command模組包含如下選項: 

  • creates:一個檔案名稱,當該檔案存在,則該命令不執行 

  • free_form:要執行的linux指令 

  • chdir:在執行指令之前,先切換到該指定的目錄 

  • removes:一個檔案名稱,當該檔案不存在,則該選項不執行

  • executable:切換shell來執行指令,該執行路徑必須是一個絕對路徑

 

使用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/bashifconfigdf -hT
執行ansible指令:ansible 10.212.52.252 -m script -a ‘script.sh‘ |egrep ‘>>|stdout‘

本文出自 “無名小卒” 部落格,請務必保留此出處http://breezey.blog.51cto.com/2400275/1757588

Ansible4:Ad-hoc與命令執行模組【轉】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.