Saltstack之Scheduler

一、引言:

  在日常的运维工作中经常会遇到需要定时定点启动任务,首先会考虑到crontab,但是通过crontab的话需要每台机器下进行设置,这样统一管理的话比较复杂;通过查百度和google发现saltstack有scheduler的功能。

二、Pillar Scheduler:

  Salt本身提供多方面的Scheduler的配置,分别有3种配置方式:

  1、从Master配置端;

  2、Master Pillar端;

  3、Minion配置端或者Minion.d下配置文件下配置

  在这里介绍的是pillar的方式;官方文档:https://docs.saltstack.com/en/latest/topics/jobs/index.html

  首先创建一个/srv/salt/pillar/top.sls

[root@test pillar]# cat /srv/salt/pillar/top.sls
base:
  "*":
    - schedule

  然后创建/srv/salt/pillar/schedule.sls

复制代码
[root@test tmp]# cat /srv/salt/pillar/schedule.sls
schedule:
  testcase:
    function: cmd.run
    seconds: 10
    args:
      - 'date >> /tmp/test.cmd.log'
    kwargs:
      stateful: False
复制代码

备注:这个调度任务的意思是:每隔10秒在/tmp目录下的test.cmd.log文件中记录一条时间。

  创建完文件之后执行下面的命令把pillar的修改刷到minion端。

salt "*" saltutil.refresh_pillar

  想查看minion端都有哪些计划任务可以用:

复制代码
[root@test pillar]# salt "*" pillar.get schedule
192.168.1.88:
    ----------
    __mine_interval:
        ----------
        function:
            mine.update
        jid_include:
            True
        maxrunning:
            2
        minutes:
            60
        name:
            __mine_interval
    testcase:
        ----------
        args:
            - date >> /tmp/test.cmd.log
        function:
            cmd.run
        jid_include:
            True
        kwargs:
            ----------
            stateful:
                False
        maxrunning:
            1
        name:
            testcase
        seconds:
            10
复制代码

或者:

复制代码
[root@test pillar]# salt "*" config.option schedule
192.168.1.88:
    ----------
    __mine_interval:
        ----------
        function:
            mine.update
        jid_include:
            True
        maxrunning:
            2
        minutes:
            60
        name:
            __mine_interval
复制代码

  config.option的方式只能出mine.update的。

三、运行结果:

复制代码
[root@test pillar]# tail -f /tmp/test.cmd.log 
Tue Mar 21 14:26:58 CST 2017
Tue Mar 21 14:27:08 CST 2017
Tue Mar 21 14:27:18 CST 2017
Tue Mar 21 14:27:28 CST 2017
Tue Mar 21 14:27:38 CST 2017
Tue Mar 21 14:27:48 CST 2017
Tue Mar 21 14:27:58 CST 2017
Tue Mar 21 14:28:08 CST 2017
Tue Mar 21 14:28:18 CST 2017
Tue Mar 21 14:28:28 CST 2017
复制代码

 

  

posted @   I’m Me!  阅读(2120)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2016-03-21 Python之logging模块
2014-03-21 Hive报错之java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
点击右上角即可分享
微信分享提示