`

使用python fabric写的一个简单的远程部署示例

阅读更多
python基础教程:

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

ptyTrue的情况下启tomcat正常,但会在束后tomcat进程也被干

 参考资料:https://segmentfault.com/q/1010000005131935


脚本调用:

fab -f deploy.py deploy:projectname=xxx

 

 

 

 

 

 

 

 
 
 
 
0
0
分享到:
评论

相关推荐

    Python_fabric是一个开源框架,用于使用AI增强人类。它提供了一个模块化框架,用于使用一组可在任何地方使用的.zip

    Python Fabric 是一个强大的工具,专为自动化和部署任务而设计,而非如标题所误述的用于AI增强人类。它的核心功能在于简化远程服务器上的命令执行,使得开发者可以编写脚本来批量处理多台服务器的任务,极大地提高了...

    python fabric实现远程部署

    Python Fabric 是一个强大的工具,它允许用户通过简单的Python脚本来执行远程命令,特别适用于自动化运维任务,例如远程部署。在多人协作开发项目时,Fabric可以帮助我们摆脱重复的手动部署过程,提高工作效率。 ...

    python2.6安装fabric

    由于 Fabric 是一个用于执行远程命令的任务自动化工具,主要用于简化通过 SSH 连接的服务器管理任务,因此它依赖于 Python 和其他一些必要的软件包。 ##### 第一步:安装 EPEL 源 EPEL (Extra Packages for ...

    Python自动化部署工具Fabric的简单上手指南.pdf

    Python自动化部署工具Fabric是一个强大的用于远程服务器自动化执行任务的库,它基于SSH协议,使得开发者可以用Python语言编写脚本来管理和部署应用程序。Fabric简化了传统SSH命令行工具的操作,提高了效率和可读性。...

    Python下Fabric的简单部署方法

    下面是一个简单的部署脚本示例,展示了如何使用Fabric来部署Python应用: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- from datetime import datetime from fabric.api import * # 登录用户和主机名...

    远程部署工具Fabric详解(支持Python3)

    下面是一个简单的部署脚本,演示了如何使用Fabric 2执行远程部署任务。 ```python # deploy.py from fabric import Connection def main(): # 创建连接 c = Connection("root@232.231.231.22", connect_kwargs={...

    Python自动化运维实战案例源码(20个案例)下载实战演练Python包使用教程指南模块操作技术与最佳实践书示例及案例源码

    包括:difflib 比对两个文件的区别用html高亮展示类似于git,dns操作python,fabric高效的ssh远程服务库,filecmp文件内容比对,func模块示例 python自定义模块,hadoop Python大数据分析示例,OMAudit 安全审计功能...

    python三大神器之fabric使用教程

    下面是一个简单的示例脚本: ```python # fabfile.py from fabric.api import local def test(): # 测试项目是否能正常运行 local('python manage.py test myapp') def commit(): # 提交代码 local('git add ...

    python fabric使用笔记

    Fabric 的设计目标是提供一个简洁易用的接口,使得开发者或运维人员能够通过编写简单的 Python 脚本来实现复杂的自动化任务。 #### 二、Fabric的功能特点 1. **自动化部署**: Fabric 可以帮助快速部署应用程序到...

    Python-python自动化运维技术与最佳实践书中示例及案例

    《Python自动化运维:技术与最佳实践》是一本深入探讨如何使用Python进行系统管理和自动化运维的权威书籍。书中涵盖了从基础的脚本编写到高级的自动化框架应用,旨在帮助IT专业人员提升工作效率,减少手动干预,确保...

    Python的自动化部署模块Fabric的安装及使用指南

    总之,Fabric是一个强大且灵活的Python库,它简化了远程服务器的自动化部署和管理。通过其简单易用的API,你可以编写出高效、可复用的部署脚本,大大提高工作效率。无论你是开发者还是运维人员,学习并掌握Fabric都...

    Python自动化部署工具Fabric的简单上手指南

    Fabric是一个用Python编写的开源库和命令行工具,用于简化远程服务器的管理和部署过程。它通过提供一系列高级接口来封装复杂的SSH会话管理,使得开发者或运维人员能够更加高效地执行常见的远程操作。Fabric的主要...

    Python-pymterm在python中实现多个选项卡的终端模拟器

    Python中的`pymterm`是一个用于创建具有多...总之,`pymterm`是一个实用的Python库,它使得在Python环境中创建多选项卡的终端模拟器变得简单,对于需要高效管理多个命令行会话的开发者来说,它是一个值得尝试的工具。

    fabric1.4版本示例环境搭建与运行

    3. **启动网络**:使用`byfn.sh`脚本启动一个简单的"two-orgs"网络,该脚本会创建通道、部署智能合约并启动相应的Docker容器。 4. **部署和实例化智能合约**:编写或下载一个链码(智能合约)文件,使用`peer ...

    fabric-sdk-py:Hyperledger Fabric Python SDK

    面料-SDK-Py Fabric-SDK-Py是Hyperledger Fabric SDK的Python 3.x实现! 当前,它主要支持Fabric 1.4.x版本。前提条件该SDK需要Python3和Libssl pkgs。 如果没有,请运行以下cmd来安装必备组件: 作业系统命令Ubuntu...

    fabric-samples:Fabric 示例脚本。 http

    `fabric-samples` 是一个基于 Python 的项目,它提供了一系列示例脚本,主要用于演示如何使用 Fabric 这个自动化部署工具来执行常见的系统管理和部署任务。Fabric 是一个强大的 Python 库,它允许用户编写简单的 ...

    Python自动化运维和部署项目工具Fabric使用实例

    Fabric是一个用Python编写的开源库,主要用于简化系统管理员的任务——实现远程服务器上的自动化部署、管理等操作。它通过SSH协议来与远程服务器交互,允许开发者编写简洁且易于理解的Python脚本来完成一系列复杂的...

    《python自动化运维:技术与最佳实践》附带示例及案例源码

    4. **自动化部署**:Python可以实现应用程序的自动化部署,如使用fabric或ansible进行远程任务执行和配置管理。 5. **日志处理**:Python的日志模块提供了一套完善的日志记录和分析机制,同时第三方库如logstash-py...

    PyPI 官网下载 | fabric_orchestrator_client-0.0.9-py3-none-any.whl

    Fabric是Python中的一个流行工具,主要用于执行远程命令和管理多台服务器。这个库可能是对Fabric的扩展,提供了一种更高级、更结构化的客户端接口来控制和协调远程操作。 **Python 运维库** 在Python中,运维库...

Global site tag (gtag.js) - Google Analytics