• 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

      

  • 相关阅读:
    python内置模块argparse的使用
    pyqt5中通过pycharm配置designer(win和mac都适用,修改下designer目录路径即可)
    初始pyqt5
    pyqt5学习示例
    python中partial用法
    python中操作csv
    python模块imghdr-----推测图像类型
    portainer docker可视化工具
    靠着这份面试手册成功斩获99家BAT大厂offer
    redis事物有一致性吗?
  • 原文地址:https://www.cnblogs.com/Richardzhu/p/6594322.html
Copyright © 2020-2023  润新知