Ansible常用模块之系统管理模块

  • 2019-09-02
  • 0
  • 0

Ansible官方手册

系统类模块有

  • 服务管理模块service
  • 定时任务模块cron

    一、service模块

    作用:管理主机上服务的启动、重启等。

    一些参数:

    name: 用于指定需要操作服务的名称,如nginx
    state:用于指定服务的状态,比如启动`state=started`,停止`state=stopped`
    enabled:用于指定服务是否开机启动,yes为开机启动,no表示不开机启动

    示例如下:

    #示例一、启动Httpd服务
    [root@ansible ~]# ansible web -m service -a "name=httpd state=started"
    
    #示例二、重载Httpd服务
    [root@ansible ~]# ansible web -m service -a "name=httpd state=reloaded"
    
    #示例三、重启Httpd服务
    [root@ansible ~]# ansible web -m service -a "name=httpd state=restarted"
    
    #示例四、停止Httpd服务
    [root@ansible ~]# ansible web -m service -a "name=httpd state=stopped"
    
    #示例五、启动Httpd服务,并加入开机自启
    [root@ansible ~]# ansible web -m service -a "name=httpd state=started enabled=yes"

二、cron模块

作用:管理远程主机上的计划任务,功能相当于crontab命令。

#查看参数
[root@ansible ~]# ansible-doc -s cron
- name: Manage cron.d and crontab entries.
  action: cron
      backup         # (yes/no)如果设置了,则会在修改远程cron_file前备份这些文件
      cron_file      # 自定义cron_file的文件名,使用相对路径则表示在/etc/cron.d中。必须同时指定user选项
      user           # 指定哪个用户的crontab将要被修改,默认修改的用户为主控端所在的用户名id的映射
      disabled       # 禁用crontab中的某个job,要求state=present
      env            # (yes/no)设置一个环境变量,将添加在crontab的顶端。使用name和value定义变量名和值
      job            # 需要执行的命令。如果设置了env,则表示环境变量的值,此时job="XXXX"等价于value="XXXX"。
                     # 要求state=present
      minute         # 分(0-59, *, */N),不写时,默认为*
      hour           # 时(0-23, *, */N),不写时,默认为*
      day            # 日(1-31, *, */N),不写时,默认为*
      month          # 月(1-12, *, */N),不写时,默认为*
      weekday        # 周(0-6 for Sunday-Saturday, *),不写时,默认为*
      name           # 描述crontab任务的字符串。但如果设置的是env,则name为环境变量的名称。要求state=absent
                     # 注意,若未设置name,且state=present,则总会创建一个新job条目,即使cron_file中已经存在
                     # 同样的条目
      special_time   # 定时任务的别称,用于定义何时运行job条目。
                     # 有效值有reboot/hourly/daily/weekly/monthly/yearly/annually。
      state          # job或者env的状态是present(默认)还是absent。present用于创建,absent用于移除

用法示例、

#每来分钟进行一次时间同步
[root@ljc ansible]# ansible web -m cron -a 'name="ntpdate" job="/usr/sbin/ntpdate ntp1.aliyun.com" cron_file=ntpdate_cron user=root minute=*/2'  
192.168.1.7 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "cron_file": "ntpdate_cron", 
    "envs": [], 
    "jobs": [
        "ntpdate"
    ]
}
#验证是否正确
[root@ljc ansible]# ansible web -m shell -a 'cat /etc/cron.d/ntpdate_cron' -i hosts 
192.168.1.7 | CHANGED | rc=0 >>
#Ansible: ntpdate
*/2 * * * * root /usr/sbin/ntpdate ntp1.aliyun.com
#移除定时任务job,要求name必须匹配,state=absent
[root@ljc ansible]# ansible web -m cron -a 'name="ntpdate" state=absent cron_file=ntpdate_cron user=root' -i hosts 
192.168.1.7 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "cron_file": "ntpdate_cron", 
    "envs": [], 
    "jobs": []
}
#注释定时任务job,要求name必须匹配,disabled=yes,并且要添加job参数
[root@ljc ansible]# ansible web -m cron -a "name=ntpdate job=‘test’ disabled=yes" -i hosts               
192.168.1.7 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "envs": [], 
    "jobs": [
        "ntpdate"
    ]
}
#查看结果
[root@ljc ansible]# ansible web -m shell -a 'cat /etc/cron.d/ntpdate_cron' -i hosts            
192.168.1.7 | CHANGED | rc=0 >>
#Ansible: ntpdate
#*/2 * * * * root /usr/sbin/ntpdate ntp1.aliyun.com

点我查看所有:Ansible系列所有文章

 Ansible常用模块之YUM模块           Ansible常用模块之命令模块

Ansible常用模块之用户管理模块     Ansible常用模块之解包模块

Ansible常用模块之文件操作模块

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨