(一)前言:
Ansible是今年來越來越火福運來平臺制作Q> 1279829431【源碼鏈接】dashengba.com?的一款開源運維自動化工具,通過Ansible可以實現(xiàn)運維自動化,提高運維工程師的工作效率,減少人為失誤。Ansible通過本身集成的非常豐富的模塊可以實現(xiàn)各種管理任務,其自帶模塊超過上千個。更為重要的是,它操作簡單,但提供的功能又非常豐富,在運維領域,幾乎可以做任何事。
Ansible自2012年發(fā)布以來,很快在全球流行,其特點如下:
Ansible基于Python開發(fā),運維工程師對其二次開發(fā)相對比較容易;
Ansible豐富的內(nèi)置模塊,幾乎可以滿足一切要求;
管理模式非常簡單,一條命令可以影響上千臺主機;
無客戶端模式,底層通過SSH通信;
我們可以通過四種方式和Ansible交互,我這里只研究了其中兩種方式,應付日常工作足夠了。分別如下:
Ad-Hoc命令集:user直接通過Ad-Hoc命令集調(diào)用Ansible工具集來完成任務。
playbooks:user預先編寫好ansible playbooks,通過執(zhí)行playbooks中預先編排好的任務集,按序執(zhí)行任務。
1、Ansible工作集:
Ansible工作集包含inventory、Modules、Plugins和API,其中,inventory(清單)用來管理設備列表,可以通過分組實現(xiàn),對組的調(diào)用直接影響組內(nèi)的所有主機;modules是各種執(zhí)行模塊,幾乎所有的管理任務都是通過模塊執(zhí)行的;plugins提供了各種附加功能;API為編程人員提供一個接口,可以基于此做Ansible的二次開發(fā)。
Ansible可以通過單條命令或者配置文件來對多臺主機進行控制及更改,下面將從安裝及配置依次寫出來。
2、playbook配置文件
playbook配置文件使用YAML語法,具有簡潔明了、結(jié)構(gòu)清晰等特點。playbook配置文件類似于shell腳本,是一個YAML格式的文件,用于保存針對特定需求的任務列表。上面介紹的ansible命令雖然可以完成各種任務,但是當配置一些復雜任務時,逐條輸入就顯得效率非常低下了。更有效的方案是在playbook配置文件中放置所有的任務代碼,利用ansible-playbook命令執(zhí)行該文件,可以實現(xiàn)自動化運維。YAML文件的擴展名通常為.yaml或.yml。
(二)Ansible的安裝及配置
通過一個簡單的環(huán)境把Ansible的配置及安裝寫下來,環(huán)境如下:
最終效果:可以通過Ansible server來控制server 1和server 2。
一、部署前工作:
1、若采用本地yum倉庫安裝,請下載我提供的本地yum倉庫,提取碼:buqy ,我提供的是Ansible 2.3.1.0版本。
2、若本機可上網(wǎng),也可以直接將yum倉庫指向互聯(lián)網(wǎng),可以安裝Ansible 2.4.x.x版本。
3、默認采用TCP 22進行與客戶機進行通信,若有更改,需自行設置防火墻,我這里為了方便,直接關(guān)閉了防火墻。
二、安裝Ansible(二選一即可):
1、采用互聯(lián)網(wǎng)yum倉庫的安裝方式:
[root@ansible ~]# yum clean all? ? ? ? #清除yum緩存[root@ansible ~]# yum -y install ansible? ? ? ? ? ? #安裝Ansible[root@ansible ~]# ansible --version? ? ? ? ? ? ? ? ? #可以查看到此信息,說明安裝成功ansible2.4.2.0config file = /etc/ansible/ansible.cfg? ? ? ? .............................
2、采用我提供的本地yum倉庫安裝方式:
[root@ansible yum.repos.d]# mount /dev/cdrom /media? ? ? ? #掛載我提供的ISO文件mount: /dev/sr0 寫保護,將以只讀方式掛載[root@ansible yum.repos.d]# cat /etc/yum.repos.d/a.repo? ? ? #刪除或移動原有yum配置文件,并編寫本地yum文件:[fd]baseurl=file:///mediagpgcheck=0[root@ansible yum.repos.d]# yum clean all? ? ? ? ? #清除yum緩存[root@ansibleyum.repos.d]# yum -y install ansible? ? ? ? ? ? #安裝Ansible[root@ansible yum.repos.d]# ansible --version? ? ? ? ? ? ? #可以查看到此信息,說明安裝成功ansible 2.3.1.0? config file = /etc/ansible/ansible.cfg? ? ? ? ? .....................
我這里采用了互聯(lián)網(wǎng)yum倉庫進行安裝,即ansible 2.4.2.0。
安裝已經(jīng)完成,但是若要正常的使用Ansible,還需要解決一個問題,就是在控制多臺主機時,若要每執(zhí)行一次命令或腳本都要輸入一次對端密碼的話,顯得就很雞肋,所以還需要創(chuàng)建SSH免交互登錄,如下:
以下操作都在Ansible服務器進行:
[root@ansible ~]# ssh-keygen -t rsa? ? ? ? ? ? #在Ansible服務器生成密鑰對,執(zhí)行后默認一直按回車即可Generating public/privatersa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):#默認按回車Enter passphrase (empty for no passphrase):#默認按回車Enter same passphrase again:#默認按回車Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:#默認按回車SHA256:zhd2++KvByxFPE4ZKmDdmTHp6cjsuIEz5M26QrkBfes root@ansibleThe key's randomart image is:#默認按回車+---[RSA 2048]----+|? ? ? o. .o*.o? ||? ? . .. =o*? ? || .? ? ? ...= .? ||. . .? ? .o o? ? || . o.. oSooo.? ? ||? +o.+ o+.ooo.? || . += +oo ....? ||? o E+....? ...? ||? .o...? .o=o? |+----[SHA256]-----+#至此密鑰對已經(jīng)生成了,隱藏存在當前用戶的宿主目錄下。[root@ansible ~]# ls -a | grep ssh? ? ? ? #查看.ssh[root@ansible ~]# cd .ssh[root@ansible .ssh]# ls? ? ? #查看.ssh目錄下的文件,有公鑰和私鑰id_rsa? id_rsa.pub? known_hosts[root@ansible ~]# ssh-copy-id root@192.168.1.2? ? ? ? ? ? #復制公鑰到主機192.168.1.2root@192.168.1.2's password:#輸入主機1.2的root用戶密碼[root@ansible ~]# ssh-copy-id root@192.168.1.3? ? ? ? ? ? #復制公鑰到主機192.168.1.3root@192.168.1.3's password:#輸入主機1.3的root用戶密碼#在實際生產(chǎn)環(huán)境中,不會使用root身份,更改一下復制公鑰時指定的用戶即可。[root@ansible ~]# ssh 192.168.1.2? ? ? ? ? #測試是否可以免密碼登錄Last login: Tue Jul 23 08:11:39 2019 from 192.168.1.88[root@server1 ~]# exit? ? ? ? ? ? ? #退出192.168.1.2的shell環(huán)境[root@ansible ~]# ssh 192.168.1.3? ? ? ? ? ? ? ? #測試是否可以免密碼登錄Last login: Tue Jul 23 08:43:16 2019 from 192.168.1.88[root@server 2 ~]# exit? ? ? ? ? #退出192.168.1.3的shell環(huán)境
三、Ansible配置:
inventory是Ansible管理主機信息的配置文件,相當于系統(tǒng)的hosts文件功能,默認存放在/etc/ansible/hosts,在hosts文件中,通過分組來組織設備,Ansible通過inventory來定義主機和分組,若不使用默認的/etc/ansible/hosts,可以通過ansible -i 新的inventory路徑?來指定inventory,我這里直接采用默認的路徑。
1、以分組的方式添加需要管理的主機:
正是管理之前,首先要編寫hosts文件,因為Ansible通過將設備列表以分組的方式添加hosts文件來實現(xiàn)對設備的管理。hosts文件中,[ ]包含的是組名,設備列表支持域名及IP地址,默認情況下,通過訪問22端口(SSH)來管理設備,若目標主機使用了非默認的SSH端口,還可以在主機名稱之后使用冒號加端口號標明,以行為分隔單位,也支持通配符。
[root@ansible ~]# vim /etc/ansible/hosts? ? ? ? ? ? #編輯清單文件,在文件末尾寫入以下內(nèi)容.....................#省略部分內(nèi)容? [web]#定義一個名為web的分組,下面是web組中的主機192.168.1.2192.168.1.3[test01]#定義一個名為test01的分組,下面是test01組中的主機www.warrent.com:222#若目標主機使用了非默認的SSH端口,可以在域名后面加端口號來指定ljz[2:5].test.com#[2:5]表示2~5之間的所有數(shù)字,如ljz2.test.com、ljz3.test.com .......的所有主機192.168.1.4:66#IP地址后面也可以指定非默認的端口號#將需要管理的主機寫入后,保存退出即可。注意,該文件中包含一個隱含的分組“all”,表示所有主機。
配置完成后,可以針對hosts定義的組進行遠程操作,也可以針對組中所指定的某一個或者多個主機操作,如下:
[root@ansible ~]# ansible web -m command -a "systemctl status httpd" --limit "192.168.1.2"#查看web組中的192.168.1.2主機httpd服務的狀態(tài)192.168.1.2| FAILED | rc=3>>● httpd.service - The Apache HTTP Server? Loaded: loaded (/usr/lib/systemd/system/httpd. preset: disabled)? Active: inactive (dead)? ? Docs: man:httpd(8)? ? ? ? ? man:apachectl(8)non-zeroreturncode#也可以這樣:[root@ansible ~]# ansible 192.168.1.2 -m command -a "systemctl status httpd"192.168.1.2| FAILED | rc=3>>● httpd.service - The Apache HTTP Server? Loaded: loaded (/usr/lib/systemd/system/httpd. preset: disabled)? Active: inactive (dead)? ? Docs: man:httpd(8)? ? ? ? ? man:apachectl(8)non-zeroreturncode[root@ansible ~]# ansible 192.168.1.* -m command -a "systemctl status httpd"#查詢192.168.1.0這個網(wǎng)段所有主機的httpd服務狀態(tài)192.168.1.2| FAILED | rc=3>>? ? .................192.168.1.3| FAILED | rc=3>>? ? .................
四、Ansible命令:
[root@ansible ~]#ansible#輸入ansible后,連續(xù)按兩下tab鍵,可以查看ansible所有相關(guān)命令ansibleansible-docansible-playbook-2ansible-2ansible-doc-2ansible-playbook-2.7ansible-2.7ansible-doc-2.7ansible-pull..........................
命令1、ansible:
ansible是生產(chǎn)環(huán)境中使用非常頻繁的命令之一,主要應用在以下場景:
臨時性的維護,沒有規(guī)律,臨時需要做的任務,也稱為非固化需求。
臨時一次性操作。
二次開發(fā)接口調(diào)用。
ansible可用的選項如下:
-v:輸出詳細的執(zhí)行過程信息,可以得到執(zhí)行過程所有的信息。
-i PATH:指定inventory信息,默認為/etc/ansible/hosts。
-f:并發(fā)線程數(shù),默認為5個線程。
--private-key=PRIVATE_KEY_FILE:指定密鑰文件。
-m:指定執(zhí)行使用的模塊。
-M:指定模塊的存放路徑,默認為/usr/share/ansible,也可以通過ANSIBLE_LIBRARY來設定默認路徑。
-a:指定模塊參數(shù)。
-u:指定遠程主機以哪個用戶運行命令。
-l:限制運行主機,等同于“--limit”。
--list-hosts:列出符合條件的主機列表,不執(zhí)行任何命令。
用法示例1(需要提前在/etc/ansible/hosts文件中定義web組):
[root@ansible ~]# ansible all -f 5 -m ping<!--檢查所有主機是否存活-->192.168.1.3 | SUCCESS => {? ? "changed": false,? ? "ping": "pong"}192.168.1.2 | SUCCESS => {? ? "changed": false,? ? "ping": "pong"}<!--其中192.168.1.3和1.2是執(zhí)行主機,SUCCESS表示命令執(zhí)行成功,“=> {”表示返回的
結(jié)果。“changed”:false表示沒有對主機做出更改,“ping”:“pong”表示執(zhí)行了ping命令的
返回結(jié)果。命令中“all”關(guān)鍵字在前面提到過,代表了/etc/ansible/hosts文件中的所有主機,
不需要在hosts文件中定義,系統(tǒng)中默認存在的-->
用法示例2:
[root@ansible ~]#ansibleweb--list#列出web組所有的主機列表hosts(2):? ? 192.168.1.2192.168.1.3#以上表示web中包含兩個主機,分別是1.2和1.3
用法示例3:
[root@ansible ~]# ansible web -m command -a "df -hT"? ? ? ? #顯示web組中主機的磁盤使用情況192.168.1.2| SUCCESS | rc=0>>文件系統(tǒng)? ? ? ? ? ? ? ? 類型? ? ? 容量? 已用? 可用 已用% 掛載點/dev/mapper/centos-root xfs? ? ? ? 50G? 5.8G? 45G? 12% /devtmpfs? ? ? ? ? ? ? ? devtmpfs895M0895M0% /dev? ? ? ? ? ? ? ? ? ? ? ? ? ............................#省略部分192.168.1.3| SUCCESS | rc=0>>文件系統(tǒng)? ? ? ? ? ? 類型? ? ? 容量? 已用? 可用 已用% 掛載點/dev/mapper/cl-root xfs? ? ? ? 17G? 5.5G? 12G? 33% /devtmpfs? ? ? ? ? ? devtmpfs897M0897M0% /devtmpfs? ? ? ? ? ? ? tmpfs912M84K912M1% /dev/shm? ? ? ? ? ? ? ? ? ? ? ? ? ............................#省略部分
ansible的返回結(jié)果非常友好,一般會用三種顏色來表示執(zhí)行結(jié)果:紅色、綠色和橘yellow(那個顏色被和諧了)。其中紅色代表執(zhí)行過程中有異常;橘yellow表示命令執(zhí)行后目標有狀態(tài)變化;綠色表示執(zhí)行成功且沒有對目標主機做修改。
命令2、ansible-doc:
ansible-doc用來查詢ansible模塊文檔的說明,類似于man命令,針對每個模塊都有詳細的用法說明及應用案例介紹。
[root@ansible ~]# ansible-doc -l | wc -l? ? ? ? ? ? ? ? ? #列出支持的模塊1378#支持的模塊有1378個[root@ansible ~]# ansible-doc ping? ? ? ? ? ? #查詢ping模塊的說明信息> PING? ? (/usr/lib/python2.7/site-packages/ansible/modules/system/ping.py)? ? ? ? A trivial testmodule,thismodulealwaysreturns`pong'onsuccessful contact. It doesnotmake senseinplaybooks, but? ? ? ? it is useful from /usr/bin/ansible' to verify the ability to
? ? ? ? ? ? ? ? ? ? ? ? ? ? ................#省略部分內(nèi)容
命令3、ansible-playbook:
ansible-playbook是日常應用中使用率最高的命令,類似于Linux中的sh或source命令,用來執(zhí)行系列任務。其工作機制是:通過讀取預先編寫好的playbook文件實現(xiàn)集中處理任務。ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要執(zhí)行的任務代碼,命令使用方式如下(playbook.yml文件需要提前編寫好,最好指定playbook.yml的絕對路徑):
[root@ansible ~]# ansible-playbook playbook.yml
命令4、ansible-console:
ansible-console是ansible為我們提供的一款交互式工具,類似于Windows中的cmd及Linux中的shell。可以在ansible-console虛擬出來的終端上像shell一樣使用ansible內(nèi)置的各種命令,這為習慣于shell交互方式的用戶提供了良好的使用體驗,所有的操作與shell類似,而且支持tab鍵補全。具體操作如下:
[root@ansible ~]# ansible-console? ? ? ? ? #連接交互式工具Vaultpassword:#ansible 2.4.2.0會提示輸入一個密碼,隨便輸入后按回車即可,不允許空值Welcome to the ansible console.Type helpor? to list commands.root@all (2)[f:5]$ cd web#切換到web組root@web (2)[f:5]$ list#列出組中主機192.168.1.2192.168.1.3root@web (2)[f:5]$ ifconfig ens33#查詢每個主機的網(wǎng)卡信息root@web (2)[f:5]$ exit#退出ansible-console環(huán)境
五、Ansible中自帶的模塊介紹:
1、command模塊:
command模塊在遠程主機執(zhí)行命令,不支持管道,重定向等shell特性,其余和shell類似,常用參數(shù)如下:
chdir:在遠程主機上運行命令前需要提前進入的目錄。
creates:在命令運行時創(chuàng)建一個文件,如果文件已經(jīng)存在,則不會執(zhí)行創(chuàng)建任務。
removes:在命令運行時移除一個文件,如果文件不存在,則不會執(zhí)行移除任務。
executeble:指明運行命令的shell程序。
[root@ansible ~]# ansible all -m command -a "chdir=/home ls ./"#在所有主機上運行“l(fā)s ./”命令,運行前切換至/home目錄下。
2、shell模塊(相當于萬能模塊,可以執(zhí)行大多數(shù)命令):
shell模塊在遠程主機執(zhí)行命令,相當于調(diào)用遠程主機的shell進程,然后在shell下打開一個子shell運行命令。和command模塊的區(qū)別是它支持shell特性,如管道符、重定向等。
[root@ansible ~]# ansible web -m shell -a 'echo "hello world" >> /tmp/hello.txt'#在web組的主機上編寫一個txt文件192.168.1.2 | SUCCESS | rc=0 >>192.168.1.3| SUCCESS |rc=0>>[root@ansible ~]# ansible web -m shell -a ' cat /tmp/hello.txt'? ? ? ? #查看編寫的文件192.168.1.3 | SUCCESS | rc=0 >>hello world192.168.1.2 | SUCCESS | rc=0 >>hello world
3、copy模塊:
copy模塊用于復制指定主機文件到遠程主機的位置,常見參數(shù)如下:
src:指出源文件路徑,可以使用相對路徑和絕對路徑。支持直接指定目錄,如果源是目錄,則目標也要是目錄。
dest:指出復制文件的目標目錄位置,使用絕對路徑,支持直接指定目錄。如果源是目錄,則目標也要是目錄,如果目標已經(jīng)存在,則會覆蓋原有內(nèi)容。
mode:指出復制時,目標文件的權(quán)限,可選。
owner:指出復制時,目標文件的屬主,可選。
group:指出復制時,目標文件的屬組,可選。
content:指出復制到目標主機上的內(nèi)容,不能與src一起使用,相當于復制content指明的數(shù)據(jù)到目標文件中。
[root@ansible ~]# ansible web -m copy -a "src=/etc/hosts dest=/tmp/ mode=777 owner=nobody group=root"#將本機的/etc/hosts文件復制到web組中的主機,并指定權(quán)限為777,屬主為nobody,屬組為root。
4、hostname模塊:
hostname模塊用于管理主機名,常用參數(shù)如下:
name:指明主機名。
[root@ansible ~]# ansible 192.168.1.2 -m hostname -a "name=web1"#將主機192.168.1.2的主機名改為web1192.168.1.2 | SUCCESS =>{ansible_facts:{ansible_domain:,ansible_fqdn:web1,? ? ? ? ansible_hostname web1ansible_nodename:web1? ? },changed:truename:web1}[root@server1 ~]# hostname? ? ? #在192.168.1.2主機上查看web1[root@server1 ~]# cat /etc/hostname? ? ? ? ? ? ? ? ? #在192.168.1.2主機上查看web1#更改主機名后需重啟才可使新的主機名生效。
5、yum模塊:
yum模塊基于yum機制,對遠程主機管理程序包,常用參數(shù)如下:
name:程序包的名稱,可以帶上版本號。若不指明版本,則默認安裝最新版本。
state=present | latest | absent:指明對程序包執(zhí)行的操作,present表示安裝程序包,latest表示安裝最新版本的程序包,absent表示卸載程序包。
disablerepo:在用yum安裝時,臨時禁用某個倉庫的ID。
enablerepo:在用yum安裝時,臨時啟用某個倉庫的ID。
conf_file:yum運行時的配置文件,而不是使用默認的配置文件。
diable_gpg_check=yes | no:是否啟用完整性校驗功能。
[root@ansible ~]# ansible web -m yum -a "name=httpd state=present"<!--
在web組中的主機上安裝httpd服務,需要注意的是,管理端只是發(fā)送yum指令到被
管理端,被管理端要存在可用的yum倉庫才可以成功安裝。
? ? ? ? -->
6、Service模塊:
Service模塊用來管理遠程主機上的服務的模塊,常見參數(shù)如下:
name:被管理的服務名稱。
state=started | stopped | restarted | reloaded:動作包含啟動、關(guān)閉、重啟及重新加載配置文件。
enabled=yes | no:表示是否設置該服務開機自啟動。
runlevel:如果設定了enabled開機自啟動,則要定義在那些運行目標下自動啟動,如2/3/4/5。
[root@ansible ~]# ansible web -m service -a "name=httpd state=started enabled=yes"#啟動httpd服務,并設置為開機自啟動。
7、user模塊:
user模塊用于管理遠程主機上的用戶賬號,常見參數(shù)如下:
name:必須參數(shù),賬號名稱。
state=present | absent:創(chuàng)建或刪除賬號,present表示創(chuàng)建,absent表示刪除。
system=yes | no:是否為系統(tǒng)賬戶。
uid:用戶UID。
group:用戶的基本組。
groups:用戶的附加組。
shell:默認使用的shell。
home:用戶的家目錄。
move_home=yes | no:如果設置的家目錄已經(jīng)存在,是否將已存在的家目錄進行移動。
password:用戶的密碼。
comment:用戶的注釋信息。
remove=yes | no:當state=absent時,是否要刪除用戶的家目錄。
[root@ansible ~]# ansible web -m user -a 'name=user1 system=yes uid=501 group=root groups=sshd shell=/sbin/nologin home=/home/user1 password=user1 comment="test user"'#創(chuàng)建一個名為user1的用戶[root@ansible ~]# ansible web -m user -a "name=user1 remove=yes state=absent"#刪除剛才創(chuàng)建的user1用戶
8、group模塊:
group模塊用于管理組,用于新建或刪除組,常用參數(shù)如下:
gid:指定組的gid
name:指定組的name
state=present | absent:創(chuàng)建或刪除
system=yes | no:是否為系統(tǒng)組
[root@ansible ~]#? ansible web -m group -a 'name=test gid=300 state=present system=yes'#創(chuàng)建gid為300,組名為test的系統(tǒng)組。[root@ansible ~]#? ansible web -m group -a 'name=test gid=300 state=absent system=yes'#刪除剛剛創(chuàng)建的組。
9、mount模塊:
mount模塊用于掛載文件系統(tǒng),常用參數(shù)如下:
src:要掛載的設備或文件系統(tǒng)
name:指定掛載點
fstype:指定文件系統(tǒng)類型
ots=w | r | o :設置文件讀寫類型,可組合使用。
state=present | absent | mounted | unmounted:present表示只修改fstab文件中的配置,不自動創(chuàng)建掛載點,而且不掛載;absent表示刪除掛載點,修改fstab文件;mounted:自動創(chuàng)建掛載點并掛載,添加自動掛載(fstab);unmounted:只卸載,不刪除掛載點,不修改fstab文件。
[root@an..~]# ansible web -m mount -a 'name=/warrent src=/dev/cdrom fstype=iso9660 state=mounted'#掛載iso鏡像到/warrent目錄下,并設置開機自動掛載。[root@ansible ~]#? ansible web -m mount -a 'name=/warrent state=absent'#卸載ISO鏡像,并刪除掛載點,刪除開機自動掛載。[root@an..~]# ansible web -m mount -a "path=/mnt/data src=/dev/sdb1 fstype=xfs ots=wr state=mounted"#注:mount已經(jīng)使用path代替了原來的name參數(shù),但是name參數(shù)還是可以使用的。
10、cron模塊:
cron模塊用來管理計劃任務,常用參數(shù)如下:
name:指定計劃任務描述,必填
job:要執(zhí)行的任務
user:運行計劃任務的用戶
執(zhí)行時間:
minute:0-59,默認為 *
hour:0-23,默認為 *
day:1-31,默認為 *
month:1-12,默認為 *
weekday:1-7,默認為 *
state=present | absent:present表示添加計劃任務;absent表示刪除計劃任務。
[root@ansible ~]# ansible web -m cron -a 'name=test user=root minute=*/2 job="echo test >> /tmp/warrent.txt" state=present'#添加一個計劃任務測試一下[root@ansible ~]# ansible web -m shell -a "crontab -l"? ? ? ? ? ? ? ? #查看創(chuàng)建的任務計劃192.168.1.2 | SUCCESS | rc=0 >>#Ansible: test*/2 * * * *echotest>> /tmp/warrent.txt192.168.1.3 | SUCCESS | rc=0 >>#Ansible: test*/2 * * * *echotest>> /tmp/warrent.txt
11、 script模塊:
功能:在遠程主機上執(zhí)行主控端的腳本,相當于scp+shell組合。
用法如下:
[root@ansible ~]#ansible web -m script -a "/home/test.sh"