手记

saltstack 添加计划任务


前面己经说过如何安装saltstack,在平时己经体验了它的强大,下面来说一下平时常用的cp模块及cron与sls文件的书写

一、salt.modules.cp

 1、复制文件[我使用最多的]

  格式:

salt.modules.cp.get_file(path, dest, saltenv='base', makedirs=False, template=None, gzip=None, env=None,**kwargs)

  常用参数说明:

   path:表示salt-master的file_roots的路径下的源文件

   dest:表示salt-minion的路径下文件(可以指定文件名,也可以不指定,但不指定【有时】会报错) 

   saltenv:salt-master部署到的环境,可以/etc/salt/master文件的file_roots自行指定,默认为base

   makedirs:类型为布尔型,True表示目录不存在创建,False表示不创建

   template: 指定模板,常用的有jinja。。。

   gzip:压缩级别

  例子:

salt '192.168.2.36-CentOS.backup.test.backend' cp.get_file salt://crontab/bak_sys.py /root/bak_sys.py makedirs=True gzip=9

 2、复制目录

  格式:

salt.modules.cp.get_dir(path, dest, saltenv='base', template=None, gzip=None, env=None, **kwargs)

  注:path在此处表示目录,如果你不想将path复制到dest之下,那么指定到dest的上一级就好

 例子:

#salt 'test-201' cp.get_dir salt://crontab /root makedirs=True

test-201:

    - /root/crontab/Insert_Outgoing_Mail_Total.py

    - /root/crontab/Redis_config.py

    .....

 3、查看文件内容 

  格式:

salt.modules.cp.get_file_str(path, saltenv='base', env=None)

  例子:

[root@report copy_crontab_file]# salt 'test-201' cp.get_file_str salt://crontab/delete_mysql_rsyslog.sh

test-201:

    #!/bin/bash

    

    # Database maintance script which can be used for rsyslog

    # and phplogcon default database schema.

    # Michael Mansour suggested it to be included - thx!

    

    # This program was original part of of PHPloghost

    # Copyright (C) 2004 Tuatha de Dana

    # some modifications for rsyslog by mmeckelein at 2007-08-08

    # 2007-08-13 mmeckelein: added dbhost and some other improvements

    # suggested by Michael Mansour - thx a lot!

    .....

二、salt.modules.cron

 1、添加计划任务

 格式:

salt.modules.cron.set_job(user, minute, hour, daymonth, month, dayweek, cmd, comment=None,identifier=None)

 参数说明:

   user:用户;剩下的表示分、时、日、月、周、命令、任务描述信息

 例子:

salt \* cron.set_job root '0' '03' '*' '*' '*' '/bin/bash /root/crontab/rsync_mysql_backup.sh' 'remote backup mysql data to xxxxxxx/backup/local_mysql_backup/ by king.gp'

 说明:每一个参数项都要用引号括起来。

 2、删除计划任务

 格式:

salt.modules.cron.rm_job(user, cmd, minute=None, hour=None, daymonth=None, month=None,dayweek=None, identifier=None)

 例子:

salt '*' -b 3 cron.rm_job root  '/root/crontab/rsync_mysql_backup.sh'

三、添加计划任务states文件版本。

 注:

要在salt-master端设置file_roots (略)

在file_roots指定的目录下创建top.sls文件

定义init.sls文件

 1、我们第二步开始,file_roots设置top文件

[root@report /]# egrep -v "^$|^#" /etc/salt/master

file_roots:

  base:

    - /home/sysadmin/yunwei

    - /home/sysadmin/yunwei/workspace

 2、创建top.sls文件

[root@report workspace]# pwd

/home/sysadmin/yunwei/workspace

[root@report workspace]# cat top.sls 

base:

  "test-201":

   - install_python_ext

   - add_crontab_file

 注:如果file_roots指向多个路径,salt则取它们的合集

 3、定义init.sls文件

 注:也是可以直接在top.sls的同级目录写sls文件的,但这样到后期要维护太多的文件,而且看上会会很乱,如果定义多级目录,就可在同名目录中写【init.sls】文件了

[root@report workspace]# cd add_crontab_file/

[root@report add_crontab_file]# pwd

/home/sysadmin/yunwei/workspace/add_crontab_file

[root@report add_crontab_file]# cat init.sls 

/root/crontab:

  file.directory:

    - user: root

    - group: root

    - mode: 755

    - makedirs: True

/root/crontab/clean_mail_local_mysql_history_data.sh:

  cron.present:

    - user: root

    - minute: 30

    - hour: 23

    - daymonth: 28

    - comment: 'clean local mysql data info by king.gp'

/root/crontab/Insert_Outgoing_Mail_Total.py:

  cron.present:

    - user: root

    - minute: 0

    - hour: 23

    - comment: 'mail outgoing total by king.gp'

/root/crontab/rsync_mysql_backup.sh:

  cron.present:

    - user: root

    - minute: 0

    - hour: 3

    - comment: 'remote backup mysql data to 192.168.3.34/backup/local_mysql_backup/ by king.gp'

/root/crontab/rsync_redis_backup.sh:

  cron.present:

    - user: root

    - minute: 0

    - hour: '*/2' 

    - comment: 'remote backup redis data to 192.168.3.37/archive/redis_backup/ by king.gp' 

/root/crontab/delete_mysql_rsyslog.sh:

  cron.present:

    - user: root

    - minute: 0

    - hour: 1

    - comment: 'del local mysql syslog data'

 注:由于有一个脚本用python写的,还要安装一些python的扩展包

[root@report copy_crontab_file]# cd ..

[root@report workspace]# cd install_python_ext/

[root@report install_python_ext]# pwd

/home/sysadmin/yunwei/workspace/install_python_ext

[root@report install_python_ext]# cat init.sls 

python_ext:

  pkg.installed:

    - pkgs:

       - python-setuptools

       - python-pip

       - MySQL-python

 4、定义runner文件

[root@report workspace]# pwd

/home/sysadmin/yunwei/workspace

[root@report workspace]# cat cron_runner.sls 

python_ext:

   salt.state:

    - tgt: 'test-201'

    - highstate: True

corn_exec:

  salt.state:

   - tgt: 'test-201'

   - highstate: True

   - require:

      - salt: python_ext

 5、测试runner文件

[root@report workspace]# salt-run state.orchestrate cron_runner test=Ture

report.chinadns.net_master:

----------

          ID: python_ext

    Function: salt.state

      Result: True

     Comment: States ran successfully. No changes made to test-201.

     Started: 18:00:13.372399

    Duration: 8079.834 ms

     Changes:   

----------

          ID: corn_exec

    Function: salt.state

      Result: True

     Comment: States ran successfully. No changes made to test-201.

     Started: 18:00:21.452916

    Duration: 8101.168 ms

     Changes:   

Summary

------------

Succeeded: 2

Failed:    0

------------

Total states run:     2

 注:此处我是先将计划任务的目录拷贝到test-201上

salt 'test-201' cp.get_file salt://crontab /root makedirs=True

 6、执行定义好的runner文件

[root@report workspace]# salt-run state.orchestrate cron_runner

report.chinadns.net_master:

----------

          ID: python_ext

    Function: salt.state

      Result: True

     Comment: States ran successfully. No changes made to test-201.

     Started: 18:03:39.272417

    Duration: 8305.688 ms

     Changes:   

----------

          ID: corn_exec

    Function: salt.state

      Result: True

     Comment: States ran successfully. No changes made to test-201.

     Started: 18:03:47.578834

    Duration: 8102.33 ms

     Changes:   

Summary

------------

Succeeded: 2

Failed:    0

------------

Total states run:     2

 7、查看结果

[root@report workspace]# salt 'test-201' cron.ls root

test-201:

    ----------

    crons:

        |_

          ----------

          cmd:

              /root/crontab/clean_mail_local_mysql_history_data.sh

          comment:

              clean local mysql data info by king.gp

          daymonth:

              28

          dayweek:

              *

          hour:

              23

          identifier:

              /root/crontab/clean_mail_local_mysql_history_data.sh

          minute:

              30

          month:

              *

        |_

          ----------

          cmd:

              /root/crontab/Insert_Outgoing_Mail_Total.py

          comment:

              mail outgoing total by king.gp

          daymonth:

              *

          dayweek:

              *

          hour:

              23

          identifier:

              /root/crontab/Insert_Outgoing_Mail_Total.py

          minute:

              0

          month:

              *

        |_

          ----------

          cmd:

              /root/crontab/rsync_mysql_backup.sh

          comment:

              remote backup mysql data to 192.168.3.37/backup/local_mysql_backup/ by king.gp

          daymonth:

              *

          dayweek:

              *

          hour:

              3

          identifier:

              /root/crontab/rsync_mysql_backup.sh

          minute:

              0

          month:

              *

        |_

          ----------

          cmd:

              /root/crontab/rsync_redis_backup.sh

          comment:

              remote backup redis data to 192.168.3.34/archive/redis_backup/ by king.gp

          daymonth:

              *

          dayweek:

              *

          hour:

              */2

          identifier:

              /root/crontab/rsync_redis_backup.sh

          minute:

              0

          month:

              *

        |_

          ----------

          cmd:

              /root/crontab/delete_mysql_rsyslog.sh

          comment:

              del local mysql syslog data

          daymonth:

              *

          dayweek:

              *

          hour:

              1

          identifier:

              /root/crontab/delete_mysql_rsyslog.sh

          minute:

              0

          month:

              *

    env:

    pre:

    special:

 注:最通用的还是写piller,但现在我还是用不明白,就不丢人了!

四、总结

  1、多看文档,多总结;【E文没过级,but我有梯子】

  2、如果别人发现你用方法很蠢,请接受;

  3、多动手。【能打就不要吵】

 

©著作权归作者所有:来自51CTO博客作者jinlinger的原创作品,如需转载,请注明出处,否则将追究法律责任

cpcronsalt自动化运维


0人推荐
随时随地看视频
慕课网APP