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的安装
