fabric自动化运维,一次编写,解放生产力
- 问题
做项目避免不了运维,每次版本上线发布,都有固定流程步骤,尤其是增量上线需要替换文件,繁琐,稍不留神就出错,还费事费力,这种情况自动化运维就相当有用拉。
fabric
fabric提供的命令行工具,可以很方便地执行应用部署和系统管理等操作。这里只介绍用到的功能,其他功能请自行百度:链接服务器设置,可以设置多个IP,这里没用到
env.hosts = [‘172.xx.114.xxx’]
env.port = 22
env.user = ‘xx’
env.password = ‘xx’执行shell命令run(shell 命令)
run(‘ls’)
上传文件
put(上传路径,目标路径)
定义一个任务
def deploy():
run(‘ls’)执行一个任务 ,这里必须是一个函数方法,不支持execute(run(‘pwd’))
execute(deploy)
2. 借助pandas实现增量上线部署
首先需要将替换文件的文件名和文件路径整理好,记录成一个excel:
代码示例:
#coding=utf-8
#author liubiao
from fabric.api import *
import pandas as pd
env.hosts = ['172.xx.114.xx']
env.port = 22
env.user = 'xxx'
env.password = 'xx'
def deploy(newVersion):
print('*************部分代码已省略,这里可以添加自己逻辑*************')
print('*************更新发布文件开始*************')
with cd('/home/uapp/oa/'):
run('rm -rf ~/liubiao.xp')
#在用户根目录中新建一个文件夹
run('mkdir ~/liubiao.xp')
#将war包移动到新建的文件夹中
run('mv oa.war ~/liubiao.xp/')
print('*************解压war包+删除war包*************')
with cd('~/liubiao.xp/'):
#解压war包
run('unzip oa.war')
# 删除war包
run('rm oa.war')
print('*************上传并替换文件*************')
filepath=pd.read_excel('filepath.xlsx')
for recond in range(0,len(filepath)):
put(filepath.iloc[recond]['文件名'],'/home/uapp/liubiao.xp'+filepath.iloc[recond]['文件路径'])
print('*************更新发布文件结束*************')
print('*************打新的war包*************')
with cd('~/liubiao.xp/'):
run('zip -r '+newVersion+'.war ./*')
print('*************将新打的war包放入发布目录中*************')
with cd('/home/uapp/oa/'):
run('cp ~/liubiao.xp/'+newVersion+'.war ./oa.war')
run('停止系统的运行命令')
run('启动系统的运行命令')
if __name__ == '__main__':
execute(deploy(‘P20200602’))
还没有评论,来说两句吧...