其实前面学习了那么多的模块,我有个感悟,ansible的各类模块都依赖于甚至说跟我们的linux常用功能极为相似,下面我继续学习ansible的定时任务模块,类似于linux下的contrab模块
以上的命令表示
每天的一点零五分执行echo test
每三天的一点一分执行echo test
重启后执行echo test
每个小时执行echo test
来看一下corn模块的参数:
ansible test177 -m cron -a "name='test crontab' minute=1 job='echo test'"
上面的命令表示在177的受管机上创建一个名字叫做test crontab的任务,任务内容是每一分钟输出echo test
在受管主机上指定用户查看一下任务
如果不想要这个定时任务就用crontab -e打开系统定时文件,找到对应的定时任务删除即可
ansible test177 -m cron -a "name='test crontab' minute=1 hour=1 day=*/3 job='echo test'"
这个命令表示在177上每三天的一点一分执行echo test
minute=1表示几点的几分钟,并不表示每一分钟,刚才的理解有误,每分钟用/ *表示
ansible test177 -m cron -a "name='test special time' special_time=reboot job='echo time'"
上面的命令表示在177上创建一个test special time的任务,在每次开机时执行echo time
ansible test177 -m cron -a "name='test special time' special_time=hourly job='echo test' backup=yes"
表示每一个小时执行echo test 如果受管机上存在special time这个任务就替换掉
可以看到原来的重启任务已经不见了
ansible test177 -m cron -a "name='test special time' state=absent backup=yes"
表示在177上删除这个任务,并且进行备份
从返回的状态可以看出我们的备份位置
ansible test177 -m cron -a "user=mysql name='test special time' special_time=hourly job='echo test'"
默认情况下是指定root用户,如果想指定用户就直接加user就行
ansible test177 -m cron -a "name='test crontab' minute=1 hour=1 day=*/3 job='echo test' disabled=yes backup=yes"
将我们三天一次的任务注释掉,同时做备份文件
如果你执行disabled的时候,打错了时间,比如把minute=1打成了minute=2,那么在注释掉后,它的时间也会随之改变
所以要在后面加上backup参数以免造成不必要的麻烦
service
service模块可以帮助我们启动受管主机上的服务,例如mysql,nginx等,但是只能启动有service功能的受管机,包括systemctl启动,
ansible test177 -m service -a "name=httpd state=started"
将177中的httpd处于启动状态
ansible test177 -m service -a "name=nginx state=stopped"
将177中的nginx处于停止状态
ansible test177 -m service -a " name='nginx' enabled=yes"
将177的nginx服务变成开机启动