ansible模块补充及playbook剧本编写

环境准备:

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
任务,简单理解为,使用不同的模块完成一件事情

ansible模块补充及playbook剧本编写_第1张图片
image
ansible模块补充及playbook剧本编写_第2张图片
image

简单编写一个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 ~]# 

你可能感兴趣的:(ansible模块补充及playbook剧本编写)