六、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。

参考资料:
转载于朱老师博客

posted @ 2021-05-18 14:20  努力吧阿团  阅读(40)  评论(0)    收藏  举报