Python fabric远程自动部署简介

2.1.    Hello,fab

1. 在当前目录下新建文件fabfile.py,输入内容如下

1 def hello():
2  
3     print("Hello fab!")

2. 执行命令fab hello,结果如下

1 # fab hello
2  
3 Hello fab!

3. 文件名不为fabfile.py时需进行指定

1 # mv fabfile.py test.py
2  
3 # fab hello
4  
5   
6  
7 Fatal error: Couldn‘t find any fabfiles!
8  
9   
10  
11 Remember that -f can be used to specify fabfile path, and use -h for help.
12  
13   
14  
15 # fab -f test.py hello
16  
17 Hello fab!

4. 参数传递

1 #vi fabfile.py
2  
3 def hello(name):
4  
5         print ‘Hello %s!‘%name
6  
7   
8  
9 # fab hello:name=fab
10  
11 Hello fab!
12  
13   
14  
15   
16  
17 # fab hello:fab
18  
19 Hello fab!

2.2.    本地操作

执行本地操作命令使用local

1. fabfile.py脚本内容如下

1 from fabric.api import local
2  
3   
4  
5 def test():
6  
7 local(‘cd /home/‘)
8  
9 local(‘ls -l|wc -l‘)

2. 执行命令fab test,结果如下

1 # fab test
2  
3 [localhost] local: cd /home/
4  
5 [localhost] local: ls -l|wc -l
6  
7 8

2.3.    远程操作

执行远程操作命令使用run

1. fabfile.py脚本内容如下

1 from fabric.api import cd,run,env,hosts
2  
3 env.hosts=[‘192.168.85.99:22‘,‘192.168.85.101:22‘]
4  
5 env.password=‘test‘
6  
7 def test():
8  
9 with cd(‘/home‘):
10  
11 run("du -sh")

2. 执行命令fab test,结果如下

1 # fab test
2  
3 [192.168.85.99:22] Executing task ‘test‘
4  
5 [192.168.85.99:22] run: du -sh
6  
7 [192.168.85.99:22] out: 392G      .
8  
9 [192.168.85.99:22] out:
10  
11 [192.168.85.101:22] Executing task ‘test‘
12  
13 [192.168.85.101:22] run: du -sh
14  
15 [192.168.85.101:22] out: 5.6G     .
16  
17 [192.168.85.101:22] out:
18  
19 Disconnecting from 192.168.85.99... done.
20  
21 Disconnecting from 192.168.85.101... done.

3. 多服务器混合,需要在不同服务器进行不同操作时,可参考如下脚本

1 from fabric.api import env,roles,run,execute
2  
3 env.roledefs = {
4  
5 ‘server1‘: [‘[email protected]:22‘,],
6  
7 ‘server2‘: [‘[email protected]:22‘, ]
8  
9 }
10  
11 env.password = ‘test‘
12  
13 @roles(‘server1‘)
14  
15 def task1():
16  
17 run(‘ls /home/ -l | wc -l‘)
18  
19 @roles(‘server2‘)
20  
21 def task2():
22  
23 run(‘du -sh /home‘)
24  
25 def test():
26  
27 execute(task1)
28  
29 execute(task2)

结果如下

1 # fab test
2  
3 [[email protected]:22] Executing task ‘task1‘
4  
5 [[email protected]:22] run: ls /home/ -l | wc -l
6  
7 [[email protected]:22] out: 27
8  
9 [[email protected]:22] out:
10  
11 [[email protected]:22] Executing task ‘task2‘
12  
13 [[email protected]:22] run: du -sh /home
14  
15 [[email protected]:22] out: 1.4G   /home
16  
17 [[email protected]:22] out:
18  
19 Disconnecting from 192.168.85.99... done.
20  
21 Disconnecting from 192.168.85.100... done.

3.    参考文章

上面只是对Python+fabric自动部署脚本编写方法的简单介绍,在实际应用过程中根据具体需求编写相应的脚本时可以参考如下文章:

1. http://docs.fabfile.org/en/latest/index.html

2. http://wklken.me/posts/2013/03/25/python-tool-fabric.html

时间: 2024-12-20 21:27:04

Python fabric远程自动部署简介的相关文章

使用Publish Over SSH插件实现远程自动部署

文档使用的环境如下: jenkins服务器:10.10.10.201(tomcat运行) 应用(tomcat)服务器:10.10.10.200 现在要实现jenkins将服务器构建打包好的war包自动发布到应用服务器,并部署运行 操作过程如下: 首先jenkins服务器需要安装Publish Over SSH插件 在jenkins页面"系统管理"-->"管理插件"-->"可选插件"中搜索Publish Over SSH插件选择并安装

Linux Shell脚本之远程自动部署java maven项目

脚本功能: 自动从git上获取java maven项目工程源码,在机器A上build,build完成后,将Class文件和配置文件等上传到机器B,重新启动机器B上的服务以便变更生效. 脚本特点: 1.(与之前的自动部署脚本相比)全新优化了脚本代码,更friendly,结构更紧凑 2.Public header删除了无用或者不好用的有色彩显示函数,并修正了WORKDIR不是绝对路径可能导致的bug 3.修正了域名解析判断是否正常的一个bug,该bug可能导致遇到无法解析后不断尝试解析 4.全新的m

jenkins使用Publish Over SSH插件实现远程自动部署

Passphrase: 密码(目标机器的密码) Path to key:key文件(私钥)的路径 SSH Server Name: 标识的名字(随便你取什么) Hostname: 需要连接ssh的主机名或ip地址,此处填写应用服务器IP(建议ip) Username: 用户名 Remote Directory: 远程目录(要发布的目录,比如/usr/local/tomcat/webapps/) 明日继续更新 原文地址:http://blog.51cto.com/xiong51/2091739

Fabric自动化运维工具实现远程SSH部署及系统管理

Fabric是基于python(2.5-2.7)库和命令行来实现SSH远程应用部署及系统管理的工具,使用它,在批量管理远程主机时,不需要一台一台的输入密码登陆,可以把所以主机的用户名和密码写在一个文件里面来操作,下文中有具体实例. Fabric的安装 yum install python-setuptools python-dev* pycrypto wget https://pypi.python.org/packages/source/F/Fabric/Fabric-1.10.0.tar.g

Hexo快速搭建静态博客并实现远程VPS自动部署

这篇文章将如何搭建hexo,以及如何通过git webhooks实现远程vps的自动部署 这篇文件适合的条件: 简单的用于个人博客.公司博客展示,hexo的定位是静态博客,要实现动态服务器的功能并不适合 有自己私有的服务器.vps.域名 git仓库,Github或国内的Coding.net hexo本地部署 流程:先在本机搭建好hexo环境,push到git仓库,再部署到服务器上. 第一步,安装hexo命令行工具,这个工具在服务器端也需要执行安装 1 npm install hexo-cli -

[Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验

1. ssh客户端生成key 1 $ ssh-keygen -t rsa -b 4096 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/Users/(username)/.ssh/id_rsa): vagrantid_rsa 4 Enter passphrase (empty for no passphrase): 5 Enter same passphrase again: 6

maven自动部署到远程tomcat教程

使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间. 本文章适用于tomcat的7.x ,8.x, 9.x版本. 下面是自动部的步骤 1,首先,配置tomcat的manager 编辑远程tomcat服务器下的conf/tomcat-users.xml,在末尾增加(其实只要拉到文件末尾,去掉注释改一下就可以了) <role rolename="manager-gui"/> <role rolename="m

换种思路解决Linux -&gt; windows的自动部署

场景: 有个项目用到了Windows服务器(运行jar包和.NET代码),如何集成到现有的自动部署平台(基于Linux)面临到两个问题 如何将资源传从Linux传输到Windows上 如何在windows上将程作为后台进程并于终端(cmd or powershell)分离,实现类似Linux下nohup命令达到的效果 对于问题1,一开始想寻找一款"windows版的sshd"程序,但是好像没找到比较官方的:后来想到powershell也有Linux版,想通过在Linux上安装power

git管理和自动部署项目

当一个项目需要纳入到版本控制的时候,选择的工具还是比较多的,最常见的就是工具有CVS,SVN,GIT等.在平时的开发中视情况而定,从来就没有最好的版本控制工具,只有最适合的工具.在这里我习惯用git来管理自己的项目,当然之前使用svn管理的,但是当用了git工具就不愿意再用其它的工具来管理.这里除了习惯之外,git的很多功能是svn不具备的,最简单的就是离线提交,用git管理的项目你会发现整个项目的大小变化不大,不像svn那样每个目录又有一个.svn 的目录,而且会使项目的变得很大.关于git与