saltstack window下的发布回滚
2021-06-05 02:05
标签:unless 目标 tac run oca pre exist 3.3 func 示例: 1、程序集主目录:service下 2、sls 目录: service_sls 下 ServerName 服务 sls 示例: 1、发布 servername.sls 发布 指令 : salt -L ‘172.16.3.33-35‘ state.sls service.servername 2、回滚备份 backup.sls 回滚 指令 : salt -L ‘172.16.3.33-35‘ state.sls service.backup 3、涉及的脚本放置在客户端机器 D:\script 目录下: getinfo.py dircopy.py saltstack window下的发布回滚 标签:unless 目标 tac run oca pre exist 3.3 func 原文地址:https://www.cnblogs.com/sharesdk/p/10821862.html{% set time = salt[‘cmd.run‘](‘D:\script\getinfo.py gettime‘) %}
{% set service_name = ‘ServerName‘ %}
Services_dir:
file.directory:
- name: D:\Services
- unless:
- test -d D:\Services
backup_dir:
file.directory:
- name: D:\Services\backup
- unless:
- test -d D:\Services\back
- require:
- file: Services_dir
temp_dir:
file.directory:
- name: D:\Services\temp
- unless:
- test -d D:\Services\temp
backup_service_dir:
file.directory:
- name: D:\Services\backup\{{service_name}}
- require:
- file: backup_dir
temp_service_dir:
file.directory:
- name: D:\Services\temp\{{service_name}}
- require:
- file: temp_dir
backup_time_dir:
file.directory:
- name: D:\Services\backup\{{service_name}}\{{time}}
- require:
- file: backup_service_dir
deploy_time_dir:
file.directory:
- name: D:\Services\temp\{{service_name}}\{{time}}
- require:
- file: temp_service_dir
backup_service:
cmd.run:
- name: xcopy /s D:\{{service_name}}\*.* D:\Services\backup\{{service_name}}\{{time}}\{{service_name}}\
- require:
- file: backup_time_dir
deploy_service_to_temp:
file.recurse:
- name: D:\Services\temp\{{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:\script\dircopy.py D:\Services\temp\{{service_name}}\{{time}}\{{service_name}}\ D:\{{service_name}}
- require:
- file: deploy_service_to_temp
{% set time = salt[‘cmd.run‘](‘D:\script\getinfo.py gettime‘) %}
{% set service_name = ‘ServerName‘ %}
{% set lastbackup = salt[‘cmd.run‘](‘D:\script\getinfo.py getbackup "D:\\Services\\backup\\ServerName"‘) %}
service_backup:
cmd.run:
- name: D:\script\dircopy.py D:\Services\backup\{{service_name}}\{{lastbackup}}\{{service_name}}\ D:\{{service_name}}\
#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
#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), os.path.join(dirnamedst, 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()
文章标题:saltstack window下的发布回滚
文章链接:http://soscw.com/index.php/essay/90673.html