加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读