跳到主要内容

ansible模块-计划任务模块

ansible查看帮助方法

# 查看所有模块帮助信息
ansible-doc -l

# 指定查看某个模块参数用法
ansible-doc copy

1.cron计划任务模块

1.1 新增计划任务

正常使用crond服务

$ crontab -l
* * * * * /bin/sh /server/scripts/yum.sh

使用ansible添加一条计划任务

ansible all -m cron -a "minute=* hour=* day=* month=* weekday=*  job='/bin/sh /server/scripts/test.sh'"

等同于

ansible all -m cron -a "job='/bin/sh /server/scripts/test.sh'"

执行完后查看,可以看到,当不指定 name 参数时,默认的注释为 #Ansible: None

$ crontab -l
#Ansible: None
* * * * * /bin/sh /server/scripts/test.sh

设置计划任务注释信息,需要使用 name 参数

ansible all -m cron -a "name='cron01' job='/bin/sh /server/scripts/test.sh'"

执行完后查看,可以看到,当指定 name 参数时,会有指定名称的注释

$ crontab -l
#Ansible: cron01
* * * * * /bin/sh /server/scripts/test.sh

指定用户

ansible all -m cron -a "name='cron01' job='/bin/sh /server/scripts/test.sh' user=hehe"

查看 hehe 用户的计划任务

$ crontab -l -u hehe
#Ansible: cron01
* * * * * /bin/sh /server/scripts/test.sh

1.2 删除计划任务

删除注释名称为 cron01 的计划任务

ansible all -m cron -a "name=cron01 state=absent"

1.3 注释计划任务

查看计划任务

$ crontab -l
#Ansible: cron01
* * * * * /bin/sh /server/scripts/test.sh

注释计划任务

注释之后想要取消注视需要指定 disabled=no

ansible all -m cron -a "name='cron01' minute=* hour=* day=* month=* weekday=* job='/bin/sh /server/scripts/test.sh' disabled=yes"

再次查看

$ crontab -l
#Ansible: cron01
#* * * * * /bin/sh /server/scripts/test.sh

1.4 修改计划任务

查看计划任务

$ crontab -l
#Ansible: cron01
* * * * * /bin/sh /server/scripts/test.sh

修改计划任务

因为已经存在注释名称为 cron01 的计划任务,因此再次执行会修改,添加 backup 参数备份计划任务

$ ansible all -m cron -a "name='cron01' minute=10 hour=10 day=* month=* weekday=* job='/bin/sh /server/scripts/test.sh' backup=yes"
devops02 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"backup_file": "/tmp/crontab7HtoRG",
"changed": true,
"envs": [],
"jobs": [
"cron01"
]
}

查看备份

$ cat /tmp/crontabeXW_Jf 
#Ansible: cron01
* * * * * /bin/sh /server/scripts/test.sh

cron模块参数

参数说明
minute分钟
hour小时
day日期
month月份
weekday星期
job要执行的命令或脚本
name指定计划任务名称
disabled是否注视
stateabsent表示删除计划任务
user指定运行用户
disabled注释计划任务,必须指定名称、时间、job
backup如果为yes,则修改或者删除计划任务前会先备份