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

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

http://www.xdnf.cn/news/6988.html

相关文章:

  • 中药药效成分群的合成生物学研究进展-文献精读130
  • json schema校验json字符串(networknt/json-schema-validator)
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类颜色QColor)
  • Java-反射(Reflection)
  • Power BI Desktop开发——矩阵相关操作
  • 智慧校园(含实验室)智能化专项汇报方案
  • 精益数据分析(64/126):移情阶段的用户触达策略——从社交平台到精准访谈
  • 在Solana上使用 Scaled UI Amount 扩展
  • 机器学习回归预测中预处理的特征工程
  • 如何根据竞价数据判断竞价强度,是否抢筹等
  • 从零开始:使用 PyTorch 构建深度学习网络
  • WebXR教学 09 项目7 使用python从0搭建一个简易个人博客
  • BiliTools v1.3.7 哔哩哔哩工具箱
  • chrome 浏览器插件 myTools, 日常小工具。
  • FreeCAD源码分析: Transaction实现原理
  • 基于51单片机温控风扇—PWM调速、2挡、数码管显示
  • TCP/UDP协议原理和区别 笔记
  • Postman遇到脚本不支持replaceIn函数
  • Cookie、Session、Token
  • 自定义类、元组、字典和结构体对比——AutoCAD C# 开发中建立不同对象之间的联系
  • 灵光一现的问题和常见错误2
  • C语言:在 Win 10 上,g++ 如何编译 gtk 应用程序
  • Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
  • cursor/vscode启动项目connect ETIMEDOUT 127.0.0.1:xx
  • 鸿蒙ArkUI体验:Hexo博客客户端开发心得
  • JVM 调优实战入门:从 GC 日志分析到参数调优
  • 基于requests_html的python爬虫
  • Redis——缓存雪崩、击穿、穿透
  • 内容安全:使用开源框架Caffe实现上传图片进行敏感内容识别
  • HMDB51数据集划分