博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
saltstack之远程触发文件备份、回滚
阅读量:6840 次
发布时间:2019-06-26

本文共 2092 字,大约阅读时间需要 6 分钟。

  hot3.png

最近做一个平台,远程触发文件的备份,替换,修改,回滚;想到用到salt,并不是使用他的统一配置功能,因为需求是每次都不一样,也不是批量,更关注灵活性,与统一配置概念有所出入,所以只是使用他的远程触发功能,
远程触发远端的机器做文件的替换备份工作,

另外salt比puppet最大的好处就是他是使用python写源代码的(因为本人只会python),

那样底层的方法什么的都看得懂,也能自己定义方法
为了方便反复使用,我定义了salt的模块方法
1、创建模块方法文件
   mkdir /srv/salt/_modules   默认没有此文件,自己生成一个

   下面的py文件自己定义,下面是我写的两个方法:  

#!/usr/bin/python# -*- coding: utf-8 -*-import sys,string,shutilimport os,tarfileimport datetime,timetn=datetime.datetime.today()time_now=tn.strftime("%Y-%m-%d")data_bak='/data/databak'data_tmp='/data/databak/tmp/%s' % time_nowcom_f="%s/%s" % (data_bak,time_now)if not os.path.exists(com_f):     os.makedirs(com_f)def CpFile():     id = sys.argv[1]     dir = sys.argv[2]            #传入两个变量,任务自动生成的id与要替换的文件     filename = '%s/%s.tar' % (com_f, id)     mode = 'w:tar'     os.chdir(data_bak)                                                                                                                                                     w_file=open("/tmp/tmp.list",'w')           w_file.write(id+" "+dir)              #记录每次备份的id与相对应的备份目录或文件的路径     w_file.close()     file = tarfile.open( filename, mode )     file.add( '/tmp/tmp.list' )     file.add( dir )         file.close()     return 'ok'       #测试过程,就先让返回ok吧,之后再做判断                                                                                          def RollBack():     id = sys.argv[1]        #想要回滚到的版本id     if not os.path.exists(data_tmp):          os.makedirs(data_tmp)     filename = '%s/%s.tar' % (com_f, id)     tar = tarfile.open("%s" % filename)     for b in tar:          tar.extract(b,path="%s" % data_tmp)     tar.close()     for line in open('%s/tmp/tmp.list' % data_tmp):          id = line.split(" ")[:1][0]          dir = line.split(" ")[1:][0]       #读取备份时的路径          backup_dir='%s/%s' % (data_tmp,dir)          os.system('\cp -rp %s %s' % (backup_dir,dir))          return 'ok'
2、测试:

   master上同步方法脚本到节点

   salt '*' saltutil.sync_all

   然后先测试备份 方法

   salt '*' cp_bakfile.CpFile 1234  /tmp/test    #id + 路径

   上节点服务器上查看,存在

   把/tmp/test下内容删除,测试回滚操作

   salt '*' cp_bakfile.RollBack 1234   

   没问题,成功!

转载于:https://my.oschina.net/kisops/blog/155734

你可能感兴趣的文章
Effective C++: {}初始化
查看>>
数学之美-【算法】 - 用来流方式计算UV的基数算法
查看>>
about @SuppressWarnings.
查看>>
几种常见的持续集成工具
查看>>
我的友情链接
查看>>
私立SVN服务器
查看>>
GlusterFS集群文件系统
查看>>
MySQL企业版VS社区版
查看>>
WebService环境搭建
查看>>
MySQL表分区的使用
查看>>
2011暑假记事
查看>>
python的包管理pip安装
查看>>
Android开发6——布局中的wrap_content和fill_parent以及match_parent
查看>>
JavaFX 常见问题_网页设计
查看>>
nagios 批量添加监控主机
查看>>
Ubuntu Linux下的QQ使用方案
查看>>
5.Python操作MySQL,三层架构,Socket网络编程
查看>>
分享:40 岁了还在写代码,是一种幸福,还是一种悲哀?
查看>>
Nginx+keepalived做双机热备加tomcat负载均衡
查看>>
Kickstart 部署CentOS6.4
查看>>