1. 程式人生 > >saltstack 在window下 發布 service 服務

saltstack 在window下 發布 service 服務

pri lee os.chdir span salt rar oserror os.path path

saltstack 發布 service 服務

如果是註冊的服務發布:

server1.sls 配置示例:

# cat server1.sls

{% set time = salt[‘cmd.run‘](‘D:\Script\getinfo.py gettime‘) %} {% set service_dirname = ‘Service‘ %} {% set service_name = ‘Server1‘ %}
# 備份目錄 backup_service: cmd.run: - name: D:\backup\rar.bat
# 停止服務 # 除了 net stop service 還可以直接殺死進程
stop_service: cmd.run: - name: taskkill /im Server1.exe /f - require: - cmd: backup_service
# 服務間歇 stop_sleep: cmd.run: - name: D:\\Script\\sleep.vbs - require: - cmd: stop_service # 服務發布 deploy_service: file.recurse: - name: D:\\{{service_dirname}}
- source: - salt://Service/Server1 - require: - cmd: stop_sleep # 服務啟動 start_service: cmd.run: - name: net start {{service_name}} - require: - file: deploy_service

同樣的發布指令:

salt -L ‘172.16.3.39‘ state.sls service.server1

相關腳本參考:

getinfo.py

#coding=utf-8
import os
import time
import sys

def getTime(*vars):
    date = time.strftime("%Y%m%d", 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()

壓縮備份 rar.bat

set "today=%Date:~3,4%%Date:~8,2%%Date:~11,2%"
md D:\\backup\\%today%
"C:\Program Files (x86)\WinRAR\WinRAR.exe" a D:\backup\%today%\DcApi_%today%.rar -x D:\Service\server1\Logs D:\Service\server1

sleep.vbs

WScript.sleep 5000 

saltstack 在window下 發布 service 服務