fabric自动化运维,一次编写,解放生产力

阳光穿透心脏的1/2处 2023-02-14 10:42 113阅读 0赞
  1. 问题

做项目避免不了运维,每次版本上线发布,都有固定流程步骤,尤其是增量上线需要替换文件,繁琐,稍不留神就出错,还费事费力,这种情况自动化运维就相当有用拉。

  1. 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:
在这里插入图片描述
代码示例:

  1. #coding=utf-8
  2. #author liubiao
  3. from fabric.api import *
  4. import pandas as pd
  5. env.hosts = ['172.xx.114.xx']
  6. env.port = 22
  7. env.user = 'xxx'
  8. env.password = 'xx'
  9. def deploy(newVersion):
  10. print('*************部分代码已省略,这里可以添加自己逻辑*************')
  11. print('*************更新发布文件开始*************')
  12. with cd('/home/uapp/oa/'):
  13. run('rm -rf ~/liubiao.xp')
  14. #在用户根目录中新建一个文件夹
  15. run('mkdir ~/liubiao.xp')
  16. #将war包移动到新建的文件夹中
  17. run('mv oa.war ~/liubiao.xp/')
  18. print('*************解压war包+删除war包*************')
  19. with cd('~/liubiao.xp/'):
  20. #解压war包
  21. run('unzip oa.war')
  22. # 删除war包
  23. run('rm oa.war')
  24. print('*************上传并替换文件*************')
  25. filepath=pd.read_excel('filepath.xlsx')
  26. for recond in range(0,len(filepath)):
  27. put(filepath.iloc[recond]['文件名'],'/home/uapp/liubiao.xp'+filepath.iloc[recond]['文件路径'])
  28. print('*************更新发布文件结束*************')
  29. print('*************打新的war包*************')
  30. with cd('~/liubiao.xp/'):
  31. run('zip -r '+newVersion+'.war ./*')
  32. print('*************将新打的war包放入发布目录中*************')
  33. with cd('/home/uapp/oa/'):
  34. run('cp ~/liubiao.xp/'+newVersion+'.war ./oa.war')
  35. run('停止系统的运行命令')
  36. run('启动系统的运行命令')
  37. if __name__ == '__main__':
  38. execute(deploy(‘P20200602’))

发表评论

表情:
评论列表 (有 0 条评论,113人围观)

还没有评论,来说两句吧...

相关阅读