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