当前位置: 首页 > news >正文

Ansible模块——服务管理和设置定时任务

设置定时任务

ansible.builtin.cron:设置 cron 定时任务。

参数名

类型

默认值

描述

namestrnullcron

 任务的注释

backupboolfalse

修改前是否备份原始 crontab 文件。

cron_filestrnull

指定编辑 /etc/cron.d/ 中的某个文件(不作用于用户 crontab)。

daystr*

指定任务运行的“日”(1-31),如 115*/2

disabledboolfalse

是否禁用该任务,等同于注释该行。

envboolfalse

指定此行为环境变量而非任务。例如设置 PATH

hourstr*

任务运行的小时(0-23),支持范围、列表、间隔等。

insertafterstrnull

插入任务时,在匹配该行之后插入。适用于编辑 cron_file

insertbeforestrnull

插入任务时,在匹配该行之前插入。适用于编辑 cron_file

jobstrnull

实际要执行的命令,如 /usr/bin/backup.sh

minutestr*

任务运行的分钟(0-59),支持范围、间隔、列表。

monthstr*

指定运行月份(1-12 或 Jan-Dec)。

special_timestrnull

特殊时间格式,如:rebootdailymonthlyhourlyweeklyyearly。一旦设置,此参数将替代分钟、小时等。

statestrpresent

设为 present 创建或更新任务,设为 absent 删除任务。

userstr

当前用户

指定任务所属用户,仅在 playbook 里以 root 用户运行时有效。

weekdaystr*

指定星期几运行(0-7 或 Sun-Sat),0 和 7 都代表星期日。

- name: Creates a cron file under /etc/cron.dansible.builtin.cron:name: yum autoupdateweekday: "2"minute: "0"hour: "12"user: rootjob: "YUMINTERACTIVE=0 /usr/sbin/yum-autoupdate"cron_file: ansible_yum-autoupdate- name: Removes a cron file from under /etc/cron.dansible.builtin.cron:name: "yum autoupdate"cron_file: ansible_yum-autoupdatestate: absent- name: Removes "APP_HOME" environment variable from crontabansible.builtin.cron:name: APP_HOMEenv: yesstate: absent- name: set PATH envansible.builtin.cron:name: PATHenv: yesjob: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binuser: root

这里要注意一点,设置 job 时 name 不能重复,Ansible 通过 name 来确定任务。

举个例子,当前 cron 如下:

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
#Ansible: cron test
* * * * * root echo $(date) >> /tmp/date.log

使用下边这个 YAML 进行删除:

- name: Remove cron jobansible.builtin.cron:name: cron testjob: echo "test" >> /tmp/date.loguser: rootstate: absentcron_file: cron_date

可以将 * * * * * root echo $(date) >> /tmp/date.log 任务删除,因为是通过 cron test 来进行匹配的。

backup 测试没生效,没用明白,不过这个应该用的不多。

服务管理

ansible.builtin.systemd

ansible.builtin.systemd 用于管理 systemd 管理的服务。

选项

类型

默认值

可选值

描述

daemon_reexecboolfalsenull

执行 daemon-reexec,序列化 systemd 管理器状态后再执行其他操作。别名:daemon-reexec。2.8 版本新增。

daemon_reloadboolfalsenull

执行 daemon-reload,确保 systemd 读取配置变更。即使不启动或停止服务也会执行。别名:daemon-reload

enabledboolnullnull

设置服务是否开机自启动。state 和 enabled 至少要设置一个。

forceboolnullnull

覆盖已有的 symlink 软链接。2.6 版本新增。

maskedboolnullnull

设置服务是否被 mask。mask 后服务无法启动。

namestrnullnull

指定要操作的单元名称(如 nginxcrond.service)。无后缀时默认 .service。别名:serviceunit

no_blockboolfalsenull

异步执行 systemd 操作,不阻塞等待完成。2.3 版本新增。

scopestrsystemsystem

userglobal

指定 systemctl 的作用域。user 模式下需确保用户 dbus 可用。2.7 版本新增。

statestrnullreloaded

restartedstartedstopped

控制单元状态:startedstopped 幂等,restarted 每次都会重启,reloaded 会重新加载且确保服务运行。

常用选项:

选项

类型

默认值

描述

daemon_reloadboolfalse

执行 daemon-reload,确保 systemd 读取配置变更。即使不启动或停止服务也会执行。别名:daemon-reload

enabledboolnull

设置服务是否开机自启动。state 和 enabled 至少要设置一个。

maskedboolnull

设置服务是否被 mask。mask 后服务无法启动。

namestrnull

指定要操作的单元名称(如 nginxcrond.service)。无后缀时默认 .service。别名:serviceunit

no_blockboolfalse

异步执行 systemd 操作,不阻塞等待完成。2.3 版本新增。

scopestrsystem

指定 systemctl 的作用域。user 模式下需确保用户 dbus 可用。2.7 版本新增。(可选值 systemuserglobal

statestrnull

控制单元状态:startedstopped 幂等,restarted 每次都会重启,reloaded 会重新加载且确保服务运行。

- name: Make sure a service unit is runningansible.builtin.systemd_service:state: startedname: httpd- name: Stop service cron on debian, if runningansible.builtin.systemd_service:name: cronstate: stopped- name: Restart service cron on centos, in all cases, also issue daemon-reload to pick up config changesansible.builtin.systemd_service:state: restarteddaemon_reload: truename: crond- name: Reload service httpd, in all casesansible.builtin.systemd_service:name: httpd.servicestate: reloaded- name: Enable service httpd and ensure it is not maskedansible.builtin.systemd_service:name: httpdenabled: truemasked: no- name: Enable a timer unit for dnf-automaticansible.builtin.systemd_service:name: dnf-automatic.timerstate: startedenabled: true- name: Just force systemd to reread configs (2.4 and above)ansible.builtin.systemd_service:daemon_reload: true- name: Just force systemd to re-execute itself (2.8 and above)ansible.builtin.systemd_service:daemon_reexec: true- name: Run a user service when XDG_RUNTIME_DIR is not set on remote loginansible.builtin.systemd_service:name: myservicestate: startedscope: userenvironment:XDG_RUNTIME_DIR: "/run/user/{{ myuid }}"

ansible.builtin.service

ansible.builtin.service 通用型服务管理模块(自动识别 init/systemd/upstart),适用于 RHEL 6 以及之前的系统。

选项

类型

默认值

描述

argumentsstr''

命令行附加参数。使用 systemd 时被忽略。别名:args

enabledboolnull

服务是否开机自启动。state 和 enabled 至少要设置一个。

namestrnull

要操作的服务名称。

patternstrnull

指定服务状态无法通过 status 命令获取时,用 ps 命令输出匹配的字符串作为替代判断。systemd 下无效。0.7 版本新增。

runlevelstrdefault

OpenRC (如 Gentoo) 使用的运行级别。systemd 下无效。

sleepintnullrestarted

 时,stop 与 start 之间等待的秒数,避免某些 init 脚本立即返回导致问题。systemd 下无效。1.3 版本新增。

statestrnull

控制服务状态。startedstopped 是幂等操作,restarted 每次都会重启,reloaded 会重新加载并确保服务运行。state 和 enabled 至少设置一个。

usestrauto

强制指定使用特定服务管理模块,默认通过 ansible_service_mgr 自动检测。2.2 版本新增。

- name: Start service httpd, if not startedansible.builtin.service:name: httpdstate: started- name: Stop service httpd, if startedansible.builtin.service:name: httpdstate: stopped- name: Restart service httpd, in all casesansible.builtin.service:name: httpdstate: restarted- name: Reload service httpd, in all casesansible.builtin.service:name: httpdstate: reloaded- name: Enable service httpd, and not touch the stateansible.builtin.service:name: httpdenabled: yes- name: Start service foo, based on running process /usr/bin/fooansible.builtin.service:name: foopattern: /usr/bin/foostate: started- name: Restart network service for interface eth0ansible.builtin.service:name: networkstate: restartedargs: eth0

相关文章:

  • 一字典两世界:优雅移除 `NSDictionary` 指定键的最佳实践
  • 腾讯 CodeBuddy 杀入 AI 编程赛道,能否撼动海外工具霸主地位?
  • C++类与对象--2 对象的初始化和清理
  • tp5 关键词搜索商品时进行关键词拆分
  • [Linux]我在Linux世界觉醒了指令系统
  • JavaScript基础-创建对象的三种方式
  • 【C++重载操作符与转换】文本查询示例
  • 数据库故障排查指南:解决常见问题,保障数据安全与稳定
  • 数据分析_Python
  • PyTorch实现三元组损失Triplet Loss
  • 为什么 Docker 建议关闭 Swap
  • 基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化
  • Elasticsearch Fetch阶段面试题
  • Springboot构建项目时lombok不生效
  • 51单片机仿真突然出问题
  • Almalinux中出现ens33 ethernet 未托管 -- lo loopback 未托管 --如何处理:
  • 提示词定制-AI写方案太泛?用“5W1H”提问法,细节拉满!
  • 售前工作.工作流程和工具
  • 【八股战神篇】Java集合高频面试题
  • nodejs快速入门到精通1
  • 回家了!子弹库帛书二、三卷将于7月首次面向公众展出
  • 当“小铁人”遇上青浦,看00后如何玩转长三角铁三
  • 民间打拐志愿者上官正义遭人身安全威胁,杭州公安:已立案
  • 端午小长假前夜火车票今日开抢,多个技巧提高购票成功率
  • 《大风杀》导演张琪:为了不算计观众,拍了部不讨好的警匪片
  • 法学联合书单|法庭上的妇女