ansible批量创建cronta定时任务
一丶安装ansible
1.yum安装ansible
yum install epel-release -y yum install ansible -y ansible --version
2.Ansible的命令参数
- ansible命令语法:
1ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]
- ansible详细参数:
12345678910-v,-verbose # 详细模式,如果命令执行成功,输出详细的结果
-i PATH,-inventory=PATH #指定host文件的路径,默认是在/etc/ansible/hosts
-f NUM,-forks=NUM #NUM是指定的一个整数,默认是5,指定fork开启同步进程的个数。
-m NAME,-module-name=NAME # 指定使用的 module 名称,默认使用 command 模块
-a,MODULE_ARGS #指定 module 模块的参数
-k,-ask-pass #提示输入 ssh 的密码,而不是使用基于 ssh 的密钥认证
-sudo # 指定使用 sudo 获得 root 权限
-K,-ask-sudo-pass #提示输入 sudo 密码,与 -sudo 一起使用
-u USERNAME,-user=USERNAME # 指定移动端的执行用户
-C,-check #测试此命令执行会改变什么内容,不会真正的去执行
- ansible-doc 详细参数:
12ansible-doc -l #列出所有的模块列表
ansible-doc -s 模块名 #查看指定模块的参数
3.配置Ansible主机文件
vim k8s-hosts
[devops] k8s-worker01 ansible_ssh_host=182.196.36.92 k8s-worker02 ansible_ssh_host=182.196.36.93 k8s-worker03 ansible_ssh_host=182.196.36.94 k8s-worker04 ansible_ssh_host=182.196.36.95 [all:vars] ansible_ssh_user=pzom ansible_ssh_port=37254 ansible_ssh_private_key_file=/home/pzom/.ssh/id_rsa
二丶ansible批量创建cronta定时任务
1.创建清理log脚本
vim delete-java-logs.sh
#!/bin/bash sudo find /data/k8s-storage/logs/ -type f -name "*20*" -exec rm -rf {} \; sudo find /data/k8s-storage/logs/ -type f -name "*.log" -exec rm -rf {} \;
2.创建清理images脚本
vim clear-images.sh
#!/bin/bash
sudo docker rmi $(sudo docker images -qa)
3.批量下发脚本
ansible -i k8s-hosts devops -m shell -a 'sudo mkdir -p /data/scripts/' ansible -i k8s-hosts devops -m shell -a 'sudo chmod -R 777 /data/scripts/' ansible -i k8s-hosts devops -m copy -a "src=./delete-java-logs.sh dest=/data/scripts/delete-java-logs.sh mode=0777" ansible -i k8s-hosts devops -m copy -a "src=./clear-images.sh dest=/data/scripts/clear-images.sh mode=0777"
4.批量创建定时任务
ansible -i k8s-hosts devops -m cron -a 'name="clean_log" minute=30 hour=5 job="sh /data/scripts/delete-java-logs.sh >/dev/null 2>&1"' ansible -i k8s-hosts devops -m cron -a 'name="clean_images" minute=30 hour=3 weekday=6 job="sh /data/scripts/clear-images.sh >/dev/null 2>&1"'
5.cron模块参数详解
1 2 3 4 5 6 7 8 9 10 11 | name参数:计划任务名称 job参数:指定计划的任务中需要实际执行的命令或者脚本 user参数:指定计划任务属于哪个用户,默认是root用户 state参数:当计划任务有名称时,根据计划任务名称修改删除对应的任务,删除计划任务state值为absent backup参数:对已有的任务修改或删除时,是否保存 disabled参数: 当计划任务有名称时,根据计划任务名称关闭(注释)对应的计划任务 minute参数:设置计划任务中分钟设定位的值,取值范围(0-59,*, */2) hour参数:设置计划任务中小时设定位的值,取值范围(0-23,*,*/2) day参数:设置计划任务中天(日)设定位的值,取值范围(1-31,*,*/2) month参数:设置计划任务中月份设定位的值,取值范围(1-12,*,*/2) weekday参数:设置计划任务中周几设定位的值,取值范围(0-6 for Sunday-Saturday, *) |
6.示例:
1)每1分钟执行一次
ansible -i k8s-hosts devops -m cron -a 'name="clean_log" minute=*/1 job="sh /data/scripts/delete-java-logs.sh >/dev/null 2>&1"'
2)每天凌晨5点执行一次
ansible -i k8s-hosts devops -m cron -a 'name="clean_log" minute=0 hour=5 job="sh /data/scripts/delete-java-logs.sh >/dev/null 2>&1"'
3)每周6的凌晨3点30分钟执行一次任务
ansible -i k8s-hosts devops -m cron -a 'name="clean_images" minute=30 hour=3 weekday=6 job="sh /data/scripts/clear-images.sh >/dev/null 2>&1"'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?