使用fabric实现简单自动部署
来源:互联网 发布:淘宝直通车找词 编辑:程序博客网 时间:2024/06/04 21:15
公司测试服务更新比较频繁,为了简化过程,实现以下简单的自动部署
部署流程大概如下图
经过多番周折终于在同事的提示下找到了 fabric,但苦于对python不熟,经过一番折腾终于初步实现了以上功能,大概步骤记录如下:
- 安装python,我使用ubuntu环境,此步骤省略,如有需要请自行百度。。。(目前fabric貌似仅支持python2.x)
- 安装fabric
官方指导文档安装方式如下
pip install fabric
但安装过程中可能会出现编译错误的情况,请根据实际情况自行查找原因
我在此过程中遇到以下两个问题
1 python.h缺失,使用 apt-get install python-dev即可解决
2 忘了。。。也是个.h文件缺失,解决方式如上 - 编写代码
# -*- coding: utf-8 -*-'''Created on 2017年5月24日@author: mqy参数说明:python auto.py 提供5个运行参数 参数 1 #秘钥位置参数 2 #服务器地址参数 3 #tomcat 在服务器的路径参数 4 #项目名称参数 5 #打包好的项目位置'''import datetimeimport timeimport osimport sysfrom fabric.context_managers import cdfrom fabric.operations import local, put, sudofrom fabric.state import env#tomcat 在服务器的路径default_tomcat_path = '/usr/local/tomcat'#服务器地址default_server_host = '127.0.0.1'#秘钥位置default_key_path = '~/key.pem'#项目名称default_project_name = 'project'#打包好的项目位置default_project_path = '~/project.war'def copy_to_server(): local( "scp -i {key_path} {product_path} ubuntu@{host}:/tmp/{target_name}".format( key_path=default_key_path, product_path=default_project_path, host=default_server_host,target_name=default_project_name+".war"))def kill_service(): set_env(default_server_host) sudo("kill -9 $(ps -ef|grep -i %s|grep -v 'grep'|awk '{print $2}')" % default_tomcat_path)def bak_service(): set_env(default_server_host) with cd("{baseServiceHome}/webapps".format(baseServiceHome=default_tomcat_path)): sudo('cp ./{baseService} ../bak/{time}.war.bak'.format(baseService=default_project_name, time=time.mktime(datetime.datetime.now().timetuple())))def remove_old_service(): set_env(default_server_host) with cd("{baseServiceHome}/webapps".format(baseServiceHome=default_tomcat_path)): sudo('rm -rf ./{service_name}'.format(service_name=default_project_name)) sudo('rm ./{service_name}'.format(service_name=default_project_name+".war"))def deploy_new_service(): set_env(default_server_host) with cd("{base_service_home}/webapps".format(base_service_home=default_tomcat_path)): sudo("mv /tmp/{service_file} ./".format(service_file=default_project_name+".war"))def start_service(): set_env(default_server_host) with cd("{base_service_home}/bin".format(base_service_home=default_tomcat_path)): sudo("set -m;./startup.sh")def set_env(host): env.host_string = host env.user = "ubuntu" env.key_filename = default_key_path env.warn_only = Truedef deploy(): copy_to_server() kill_service() bak_service() remove_old_service() deploy_new_service() start_service()if __name__ == '__main__': for i in range(len(sys.argv)): if i==0: pass if i==1: default_key_path=sys.argv[1] if i==2: default_server_host=sys.argv[2] if i==3: default_tomcat_path=sys.argv[3] if i==4: default_project_name=sys.argv[4] if i==5: default_project_path=sys.argv[5] print default_key_path+"==="+default_server_host+"===="+default_tomcat_path+"====="+default_project_name+"======"+default_project_path deploy()
由于本人第一次编写python代码,以上过程还真是有些离奇,但好在功能已经初步实现。也不枉费我折腾一天。
阅读全文
0 0
- 使用fabric实现简单自动部署
- Fabric自动化部署的简单使用
- 自动部署工具fabric
- Fabric集群简单部署
- 浅谈基于Fabric实现GAP集成自动部署
- fabric自动部署django工程
- fabric简单使用
- python + fabric 实现批量部署
- python fabric实现远程部署
- 使用Fabric部署网站应用
- 使用Fabric部署网站应用
- 使用Fabric部署网站应用
- Python fabric远程自动部署简介
- Python fabric远程自动部署简介
- 如何用Fabric实现无密码输入提示的远程自动部署
- python fabric实现远程操作和部署
- python fabric实现远程操作和部署
- python fabric实现远程操作和部署
- 总结:js点击事件 通过a标签ID进行删除书写错误
- #利用background实现list-style的完美解决方案
- leveldb Status 分析
- Android蓝牙4.0Ble开发
- HDU 1157 JAVA
- 使用fabric实现简单自动部署
- Google推荐的图片加载库Glide介绍
- VC++使用CImage PNG转BMP图片透明背景处理
- leveldb Arena 分析
- Android adb工具基础
- MultiNet:自主驾驶中的实时联合语义推理(译)
- vc++ release dll文件调试
- Java生成验证码
- opencv3.2.0 qt5.8 ubuntu14.04 配置