六、Ansible系统类模块(一)
系统类模块
cron:用于计划任务,相当于crontab命令
service:管理远程主机上的服务,启动停止重启等
user:管理远程主机上的用户,如创建用户、修改用户、删除用户、为用户创建密钥对等操作
group:管理远程主机上的组。
cron模块
在这里先复习一下计划任务的内容,示例如下
5 1 * * * echo test #每天的1点5分输出test字符
1 1 */3 * * echo test #每3天的1点1分执行一次输出test字符的计划任务
@reboot echo test #每次系统启动后执行一次输出test字符的计划任务
@hourly echo test #每小时执行一次输出test字符的计划任务
参考资料:cron使用
案例
1、在受管主机上创建计划任务,任务名称为test crontab,每天1点5分执行,任务内容为输出test字符
$ ansible db_servers -m cron -a \
" name='test crontab' minute=5 hour=1 job='echo test' "
2、任务每3天执行一次,于当天的1点1分开始执行,任务内容为输出test字符
$ ansible db_servers -m cron -a \
" name='crontab day test' minute=1 hour=1 day=*/3 job='echo test' "
3、在重启时执行任务计划
$ ansible db_servers -m cron -a \
" name='test special time' special_time=reboot job='echo test' "
4、当已存在名为test special time计划任务时(也就是案例3),再执行同名任务计划会修改该任务计划;也就是操作同名任务时会修改原来的任务计划
$ ansible db_servers -m cron -a \
" name='test special time' special_time=reboot job='echo abc' "
5、这里多了backup参数,故修改名为test special time计划任务前会先备份
$ ansible db_servers -m cron -a \
" name='test special time' special_time=hourly job='echo test' backup=yes "
注意:返回信息的backup_file字段中可以看到备份文件的远程主机中的位置;
6、删除名为test special time计划任务,删除前先备份
$ ansible db_servers -m cron -a \
" name='test special time' state=absent backup=yes "
7、默认使用root用户创建计划任务,如下案例指定使用tz用户创建任务计划
$ ansible db_servers -m cron -a \
"user=tz name='test special time' special_time=hourly job='echo test'"
注意:可在远程主机执行crontab -lu tz查看创建的计划任务
8、注释掉名为crontab day test的计划任务,注释前会先备份
$ ansible db_servers -m cron -a \
" name='crontab day test' minute=1 hour=1 day=*/3 job='echo test' disabled=yes backup=yes"
9、注释掉每55分钟执行一次的计划任务,注释前会先备份
$ ansible db_servers -m cron -a \
" name='crontab day test' minute=55 job='echo test' disabled=yes backup=yes"
注意:如果忘记了写任务计划时间,注释前的备份会被设置为默认时间,如* * * * * echo test。
使用disabled参数时,最好结合backup参数一起使用,万一注释错误还有备份可以查看。
常用参数
-
minute
用于设置计划任务中的分钟,默认值为”*” -
hour
用于设置计划任务中的小时,默认值为”*” -
day
用于设置计划任务中的天,当不使用此参数时默认值为”*” -
month
用于设置计划任务中的月,当不使用此参数时默认值为”*” -
weekday
用于设置计划任务中周几设定位的值,当不使用此参数时默认值为”*” -
special_time
在上述示例3与示例5中,计划任务的时间设定格式为@reboot或者@hourly,@reboot表示重启时执行,@hourly表示每小时执行一次,相当于设置成”0 * * * ” ,这种@开头的时间设定格式则需要使用special_time参数进行设置,special_time参数的可用值有reboot(重启后)、yearly(每年)、annually(每年,与yearly相同)、monthly(每月)、weekly(每周)、daily(每天)、hourly(每时)。注意:当上述时间单位设定参数都未指定时,计划任务的时间设定默认会被设定为” * * * *”,这样表示每分钟都会执行一次计划任务。 -
user
用于设置当前计划任务属于哪个用户,不使用此参数时默认为管理员用户 -
job
用于指定计划的任务中需要执行的命令或者脚本,比如上例中的”echo test”命令。 -
name
用于设置计划任务的名称,计划任务的名称会在注释中显示,当不指定计划任务的名称时,默认添加注释的内容为#Ansible: None,如果指定计划任务的名称为test,那么注释的内容为#Ansible: test -
state
state的值设置为absent时,可以删除对应名称的计划任务。 -
disabled
disabled参数可以根据名称注释掉对应的任务,可以参考示例9。(注意:使用此参数时,需要指定任务的名称,任务的job以及任务的时间设定,并且任务的时间设定必须和对应任务完全相同,否则在注释任务的同时,任务的时间设定会被修改为默认值) -
backup
如果此参数的值设置为yes,那么当修改或者删除对应的计划任务时,会先对计划任务进行备份,然后再对计划任务进行修改或者删除,cron模块会在远程主机的/tmp目录下创建备份文件,以crontab开头并且随机加入一些字符,具体的备份文件名称会在返回信息的backup_file字段中看到,推荐将此此参数设置为yes。
参考资料:
转载于朱老师博客

浙公网安备 33010602011771号