saltstack window下的发布回滚
发布时间:2020-12-14 02:04:30 所属栏目:Windows 来源:网络整理
导读:示例: 1、程序集主目录:service下 2、sls 目录: service_sls 下 ServerName 服务 sls 示例: 1、发布 servername.sls {% set time = salt[ ‘ cmd.run ‘ ]( ‘ D:scriptgetinfo.py gettime ‘ ) % }{ % set service_name = ‘ ServerName ‘ % }Servic
示例: 1、程序集主目录:service下 2、sls 目录: service_sls 下 ServerName 服务 sls 示例: 1、发布 servername.sls {% set time = salt[‘cmd.run‘](‘D:scriptgetinfo.py gettime‘) %} {% set service_name = ‘ServerName‘ %} Services_dir: file.directory: - name: D:Services - unless: - test -d D:Services backup_dir: file.directory: - name: D:Servicesbackup - unless: - test -d D:Servicesback - require: - file: Services_dir temp_dir: file.directory: - name: D:Servicestemp - unless: - test -d D:Servicestemp backup_service_dir: file.directory: - name: D:Servicesbackup{{service_name}} - require: - file: backup_dir temp_service_dir: file.directory: - name: D:Servicestemp{{service_name}} - require: - file: temp_dir backup_time_dir: file.directory: - name: D:Servicesbackup{{service_name}}{{time}} - require: - file: backup_service_dir deploy_time_dir: file.directory: - name: D:Servicestemp{{service_name}}{{time}} - require: - file: temp_service_dir backup_service: cmd.run: - name: xcopy /s D:{{service_name}}*.* D:Servicesbackup{{service_name}}{{time}}{{service_name}} - require: - file: backup_time_dir deploy_service_to_temp: file.recurse: - name: D:Servicestemp{{service_name}}{{time}}{{service_name}} - source: - salt://{{service_name}}/files/{{service_name}} - require: - cmd: backup_service - file: deploy_time_dir deploy_service_to_public: cmd.run: - name: D:scriptdircopy.py D:Servicestemp{{service_name}}{{time}}{{service_name}} D:{{service_name}} - require: - file: deploy_service_to_temp ?发布 指令 :? salt -L ‘172.16.3.33-35‘ state.sls service.servername 2、回滚备份?backup.sls {% set time = salt[‘cmd.run‘](‘D:scriptgetinfo.py gettime‘) %} {% set service_name = ‘ServerName‘ %} {% set lastbackup = salt[‘cmd.run‘](‘D:scriptgetinfo.py getbackup "D:ServicesbackupServerName"‘) %} service_backup: cmd.run: - name: D:scriptdircopy.py D:Servicesbackup{{service_name}}{{lastbackup}}{{service_name}} D:{{service_name}} ?回滚 指令 : salt -L ‘172.16.3.33-35‘ state.sls service.backup 3、涉及的脚本放置在客户端机器? D:script?目录下: getinfo.py #coding=utf-8 import os import time import sys def getTime(*vars): date = time.strftime("%Y%m%d%H%M%S",time.localtime(time.time())) return date def getLastBackup(*vars): if not os.path.exists(vars[0]): print ‘%r: 备份路径不存在‘ % vars[0] sys.exit(1) try: os.chdir(vars[0]) except OSError,e: print e sys.exit(1) else: lastbackup = sorted(os.listdir(os.curdir)).pop() return lastbackup def usage(): print ‘Usage: python getinfo.py [ gettime | getbackup <service>]‘ funcdict = {‘gettime‘: getTime,‘getbackup‘: getLastBackup} def main(): if len(sys.argv) < 2: usage() sys.exit(1) option = sys.argv[1:] if option[0] in funcdict.keys(): print funcdict[option[0]](*option[1:]) else: usage() if __name__ == ‘__main__‘: main() dircopy.py #coding=utf-8 import shutil import os import sys def dircopy(pathsrc,pathdst): os.path.walk(pathsrc,visit,‘‘) def visit(arg,dirname,names): dir = dirname.replace(sys.argv[1],‘‘) # print ‘当前目录: ‘,dirname # print ‘当前相对目录:‘,dir # print ‘当前目录下的文件:‘,names # print ‘PathDst‘,PathDst # print ‘+‘ # print dir dirnamedst = os.path.join(sys.argv[2],dir) # print ‘目标目录:‘,dirnamedst if not os.path.exists(dirnamedst): os.mkdir(dirnamedst) # print ‘创建目标目录成功‘ for file in names: # print ‘判断文件:‘,file if os.path.isdir(os.path.join(dirname,file)) and not os.path.exists(os.path.join(dirnamedst,file)): os.mkdir(os.path.join(dirnamedst,file)) # print ‘创建目录:‘,os.path.join(dirnamedst,file) elif os.path.isfile(os.path.join(dirname,file)): shutil.copy2(os.path.join(dirname,file),file)) # print ‘拷贝文件:‘,os.path.join(dirname,file) # print ‘-‘*50 # print ‘开始下一次遍历‘ # print def main(): if len(sys.argv) != 3: print ‘Usage: dircopy.py src dst‘ sys.exit(1) else: if not sys.argv[1].endswith(os.path.sep): sys.argv[1] = sys.argv[1] + os.path.sep if not sys.argv[2].endswith(os.path.sep): sys.argv[2] = sys.argv[2] + os.path.sep dircopy(sys.argv[1],sys.argv[2]) if __name__ == ‘__main__‘: main() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2008 – 如何使AD高度可用于将其用作LDAP服
- 如何从Windows机器到远程Linux JVM运行Jprofiler
- windows-server-2008 – 没有“通过远程桌面服务登录”权限
- 将Microsoft Azure VM移动到vNet中的其他子网
- XAMPP(适用于Windows)优于WampServer?如果是这样,为什么?
- Windows下安装的XAMPP如何设置Apache和MySQL等服务开机自启
- windows-7 – 在Windows 7中是否有完全支持Tortoise SVN(包
- windows-phone-7 – 来自代码的本地Toast通知
- Windows中的PDF到TIFF免费库?
- Win7下mysql的安装