环境准备:
m01管理服务器(外网:10.0.0.61;内网:172.16.1.61)
backup(外网:10.0.0.41;内网:172.16.1.41)
nfs01(外网:10.0.0.31;内网:172.16.1.31)
web01(外网:10.0.0.7;内网: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(定时任务模块)
参数:
name:指定定时任务的注释
minute:分钟(0-59,,/2)
month:月份(1-12,,/2)
job:指定定时任务的命令或脚本
hour:小时(0-23,,/2)
day:天(0-31,,/2)
weekday:分钟(0-6,*)
state:
present:添加定时任务
absent:删除定时任务
#在backup和nfs01机器中添加一个定时任务每5分钟同步系统时间
\\正常定时任务格式:
*/5 * * * * /sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1
\\ansible定时任务模块格式:
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
参数:
fstype:文件系统类型
src:source 源
path:挂载点
opts:挂载参数,defaults(默认)
state:状态(临时、永久)
present:开机挂载,仅将挂载设备写入/etc/fstab
mounted:挂载设备,并将配置写入/etc/fstab
unmounted:卸载设备,不会清除/etc/fstab写入的配置
absent:卸载设备,会清除/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:定义的是具体执行的任务
playbook:由一个或多个play组成,一个play可以包含多个task
任务,简单理解为,使用不同的模块完成一件事情
简单编写一个playbook剧本
#在backup和nfs01机器中添加一个定时任务每5分钟同步系统时间
1>playbook剧本内容
[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>检查剧本执行剧本
[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>检查剧本检查定时任务是否添加成功
[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 ~]#