環(huán)境準備:
m01管理服務(wù)器(外網(wǎng):10.0.0.61;內(nèi)網(wǎng):172.16.1.61)
backup(外網(wǎng):10.0.0.41;內(nèi)網(wǎng):172.16.1.41)
nfs01(外網(wǎng):10.0.0.31;內(nèi)網(wǎng):172.16.1.31)
web01(外網(wǎng):10.0.0.7;內(nèi)網(wǎng):172.16.1.7)
/etc/ansible/hosts主機清單中的配置為
[root@m01 ~]# tail -5 /etc/ansible/hosts
[oldboy]
172.16.1.41
172.16.1.31
[web]
172.16.1.7
一、ansible模塊補充 ※ ※ ※
1>cron(定時任務(wù)模塊)
參數(shù):
name:指定定時任務(wù)的注釋
minute:分鐘(0-59,,/2)
month:月份(1-12,,/2)
job:指定定時任務(wù)的命令或腳本
hour:小時(0-23,,/2)
day:天(0-31,,/2)
weekday:分鐘(0-6,*)
state:
??present:添加定時任務(wù)
??absent:刪除定時任務(wù)
#在backup和nfs01機器中添加一個定時任務(wù)每5分鐘同步系統(tǒng)時間
\\正常定時任務(wù)格式:
*/5 * * * * /sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1
\\ansible定時任務(wù)模塊格式:
ansible oldboy -m cron -a 'name="sync time" minute="*/5" job="/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1" state=present'
2>mount(掛載模塊)
注:測試這個掛載模塊之前,一定要先在nfs01上配置好nfs
參數(shù):
?fstype:文件系統(tǒng)類型
?src:source 源
?path:掛載點
?opts:掛載參數(shù),defaults(默認)
?state:狀態(tài)(臨時、永久)
???present:開機掛載,僅將掛載設(shè)備寫入/etc/fstab
???mounted:掛載設(shè)備,并將配置寫入/etc/fstab
???unmounted:卸載設(shè)備,不會清除/etc/fstab寫入的配置
???absent:卸載設(shè)備,會清除/etc/fstab寫入的配置
#將nfs01機器上的共享目錄/nfs掛載到web01機器上的/upload
\\正常mount掛載命令:
mount -t nfs 172.16.1.31:/data /web01
\\ansible中mount模塊命令
ansible 172.16.1.7 -m mount -a 'src=172.16.1.31:/nfs path=/upload fstype=nfs state=mounted'
二、playbook介紹
2.1 playbook(劇本)的組成
play:定義的是主機的角色
task:定義的是具體執(zhí)行的任務(wù)
playbook:由一個或多個play組成,一個play可以包含多個task
任務(wù),簡單理解為,使用不同的模塊完成一件事情

簡單編寫一個playbook劇本
#在backup和nfs01機器中添加一個定時任務(wù)每5分鐘同步系統(tǒng)時間
1>playbook劇本內(nèi)容
[root@m01 ~]# cat /etc/ansible/cron-time.yml
---
- hosts: all
tasks:
- name: cron ntpdate
cron:
name: sync time-v2
minute: "*/5"
job: /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
state: present
[root@m01 ~]#
2>檢查劇本
[root@m01 ~]# ansible-playbook -C /etc/ansible/cron-time.yml
PLAY [all] ***************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************
ok: [172.16.1.7]
ok: [172.16.1.31]
ok: [172.16.1.41]
TASK [cron ntpdate] ******************************************************************************************************************
changed: [172.16.1.41]
changed: [172.16.1.7]
changed: [172.16.1.31]
PLAY RECAP ***************************************************************************************************************************
172.16.1.31 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.1.41 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.1.7 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@m01 ~]#
3>檢查劇本執(zhí)行劇本
[root@m01 ~]# ansible-playbook /etc/ansible/cron-time.yml
PLAY [all] ***************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************
ok: [172.16.1.31]
ok: [172.16.1.41]
ok: [172.16.1.7]
TASK [cron ntpdate] ******************************************************************************************************************
changed: [172.16.1.41]
changed: [172.16.1.7]
changed: [172.16.1.31]
PLAY RECAP ***************************************************************************************************************************
172.16.1.31 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.1.41 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.1.7 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[root@m01 ~]#
4>檢查劇本檢查定時任務(wù)是否添加成功
[root@m01 ~]# ansible all -a 'crontab -l'
172.16.1.7 | CHANGED | rc=0 >>
#Ansible: sync time
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
#Ansible: sync time-v2
*/5 * * * * /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
172.16.1.41 | CHANGED | rc=0 >>
#Ansible: sync time
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
#Ansible: sync time-v2
*/5 * * * * /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
172.16.1.31 | CHANGED | rc=0 >>
#Ansible: sync time
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
#Ansible: sync time-v2
*/5 * * * * /sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
[root@m01 ~]#
