http://www.runoob.com/python/python-tutorial.html
fabric帮助文档:
http://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html
一、环境
1 安装python
python版本2.5 – 2.7
mac上安装方式
brew install python |
查看版本
python --version |
2 安装fabric
mac上安装命令
brew install fabric |
二、简单示例程序
这个程序要在多个服务器部署,可以部署多个项目,但是具体部署哪个项目,需要在参数中传入。部署多个服务器时,是依次部署,依次启动的方式,不会导致同时将服务器关闭,到时服务不可用的问题!
该脚本文件名为deploy.py
#!/usr/bin/env python # encoding:utf-8 from fabric.api import * import time TOMCAT_HOME = "/xxxx/apache-tomcat-8.0.29" WAR_DIR = "/home/jenkins/.jenkins/xxxx/target/" #要远程部署的几个服务器 servers = [ 'myserver1', 'myserver2' ] #这几个服务器有统一的用户名访问 env.user= "server_username " #服务器用户密码 env.password = "server_password" def deploy(projectname): for server in servers: print("正在部署服务器:" + server + " 项目名:" + projectname) with settings(host_string = server): deploy_one_server(projectname) print("部署服务器 "+ server +" 项目" + projectname + " 完成!") print "休息60秒" time.sleep(60) #部署一个服务器 def deploy_one_server(projectname): warfilename = projectname + ".war" #1,上传文件到tomcat根目录 print("1,上传文件到tomcat根目录") with lcd(WAR_DIR): with cd(TOMCAT_HOME): put(warfilename,warfilename) run("ls") #2,关闭服务器 print "2,关闭服务器" close_tomcat() #3,删除原有的部署文件 print "3,删除原有的部署文件" with cd(TOMCAT_HOME + "/webapps/"): run("rm -rf " + projectname + "/") run("rm -rfv " + warfilename) #4,将已上传的文件放到tomcat项目目录 print "4,将已上传的文件放到tomcat项目目录" with cd(TOMCAT_HOME): run("mv " + warfilename + " ./webapps/") #5,启动服务器 print "5,启动服务器" run(TOMCAT_HOME +"/bin/startup.sh",pty=False) #关闭tomcat服务器 def close_tomcat(): #kill可能会因为没有tomcat线程,导致关闭命令失败,所以需要在产生异常时继续执行 with settings( hide('warnings', 'running', 'stdout', 'stderr'), warn_only=True ): run("ps -ef |grep tomcat |grep -v grep |awk -F \" \" '{print $2}' | xargs kill -9")
注意:最后启动tomcat时,run方法要使用pty=False
pty在True的情况下启动tomcat正常,但会在结束后导致tomcat进程也被干掉 |
参考资料:https://segmentfault.com/q/1010000005131935
脚本调用:
fab -f deploy.py deploy:projectname=xxx |
相关推荐
近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是...直到,发现了fabric可以将自动化部署或者多机操作的命令固化到一个脚本里和某些运维工具很像,用它主要是因为,简单好用易上
包括:difflib 比对两个文件的区别用html高亮展示类似于git,dns操作python,fabric高效的ssh远程服务库,filecmp文件内容比对,func模块示例 python自定义模块,hadoop Python大数据分析示例,OMAudit 安全审计功能...
主要介绍了如何通过python的fabric包完成代码上传部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
面料-SDK-Py Fabric-SDK-Py是Hyperledger Fabric SDK的Python 3.x实现! 当前,它主要支持Fabric 1.4.x版本。前提条件该SDK需要Python3和Libssl pkgs。 如果没有,请运行以下cmd来安装必备组件: 作业系统命令Ubuntu...
因为整个代码部署过程都是相同的,只要我们用 Fabric 写好部署脚本,以后就可以通过运行脚本自动完成部署了。 首先在本地安装 Fabric: $ pipenv install fabric --dev 因为 Fabric 只需在本地使用,因此使用 –dev...
rcontrol是基于的paramiko旨在工作,通过SSH远程机器上一个Python库。 与fabric不同,它旨在以异步方式执行任务,并与 python >= 2.7 (包括python 3 )一起工作。 请注意,这正在开发中! 我正在等待反馈、想法...
该存储库将提供 Python 接口,用于操作和使用 Cisco 的云软件堆栈,包括 UCS Director 和 Intercloud Fabric Director。 (随着时间的推移和其他人一起来) 作者信息 作者汉克普雷斯顿 联系信息 用法 有两个主要的 ...
织物样品 用于各种常见任务的 Fabric 示例脚本 (fabfiles)。 数据库 特定于数据库的操作 堆栈示例 使用各种工具更复杂的样本
系统管理器一个简单的 Python 脚本,用于通过 SSH 连接到盒子并完成任务。 Windows DHCP/DNS 添加主机示例要求Python 用于 Python 的织物运行 SSH 服务器的 Windows 机器(如果您想使用 Windows 功能)运行脚本只需...
例如,仅将代码部署到 Web 服务器(参见下面的示例) 随意使用您与 Fabric 和 AWS 一起使用的助手发送拉取请求安装pip install fabric-aws-tools示例 fabfile from fabric . api import *from fabric_aws_tools ...
与主管一起控制流程的简单示例应用程序。 使用fabric 来运行supervisor 命令。 安装 虚拟环境 .env 源 .env/bin/activate pip install -r requirements.txt 用法 fab start(启动过程) 工厂停止(停止进程) 您...
示例1:文件打包,上传与校验 我们时常做一些文件包分发的工作,实施步骤一般是先压缩打包,在批量上传至目标服务器,最后做一致性校验,本案例通过put()方法实现文件的上传,通过对比本地与远程主机文件的md5,最终...
之前部署Web应用,没用docker,直接在服务器上部署,使用了fabric+nginx+supervisor+gunicorn部署,可查看我写过的一片博客:部署Web应用。但后来了解了docker,为其“Build,Ship and Run Any App,Anywhere”的思想...
一个模板项目,从可以使用和进行开发,测试和部署的应用程序开始。 该项目最大程度地减少了外部依赖性,唯一的硬依赖性是miniconda安装或docker。 在主机和docker映像上都使用Fabric(python)来自动执行某些任务...
Python-测试-工具-报告 大纲 介绍 测试库:unittest vs pytest vsnose 用于 Web 应用程序测试的 Selenium ... 我们将超越,展示使用 Selenium 进行 Web 应用程序测试的示例,以及诸如生菜和行为之类的 BDD
这是一种 hack,可以将 Fabric 任务定义为类中的方法,而不仅仅是模块级函数。 这种基于类的方法提供了继承和方法覆盖的好处。 用法示例: from fabriclassed import initialize from fabriclassed . base import...
安装使用 pip 安装它: pip install fabliip用法文档托管在 readthedocs 上: ://fabliip.rtfd.org/ 您应该能够通过浏览源代码了解 Fabliip 提供的不同帮助程序,但这里有一个最小示例,可以让您轻松启用/禁用 ...
这个Flask应用程序框架已经预先配置了Flask-SQLAlchemy , Flask-WTF , Fabric , Coverage和Bootstrap前端(以及其他)。 这将使您的Flask应用程序快速启动并在Heroku或PythonAnywhere上运行。 对于所有新的Flask...
第八章 从“零”开发一个轻量级WebServer 第九章 集中化管理平台Ansible详解 第十章 集中化管理平台Saltstack详解 第十一章 统一网络控制器Func详解 第十二章 Python大数据应用详解 第十三章 从零开始打造B/S...