您的位置:首页 > 编程语言 > Python开发

Python fabric远程自动部署简介

2016-06-15 00:00 465 查看
Fabric是一个Python(2.5-2.7)库,用于简化使用SSH的应用程序部署或系统管理任务。

它提供的操作包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等。

本文主要介绍CentOS6.3上使用fabric进行自动部署的基本方法。

1.环境部署

本节主要介绍python版本升级,pip及fabric部署方法。

1.1.Python版本升级

CentOS6.3自带的Python版本为2.6,首先需要升级到2.7版本。由于旧版本的Python已被深度依赖,所以不能卸载原有的Python,只能全新安装。

1.下载Pyhon,选择下载Gzippedsourcetarball(2.7.6)(sig),网址:https://www.python.org/download/releases/2.7.6

2.解压安装,命令如下

tar-xvfPython-2.7.6.tgz

cdPython-2.7.6

./configure--prefix=/usr/local/python2.7

make

makeinstall

3.创建链接来使系统默认python变为python2.7

ln-fs/usr/local/python2.7/bin/python2.7/usr/bin/python

4.查看Python版本

python–V

5.修改yum配置(否则yum无法正常运行)

vi/usr/bin/yum

将第一行的#!/usr/bin/python修改为系统原有的python版本地址#!/usr/bin/python2.6

至此CentOS6.3系统Python已成功升级至2.7.6版本。

1.2.安装pip

Pip是一个安装和管理python包的工具。

安装方法如下:

1.下载pip,地址https://raw.github.com/pypa/pip/master/contrib/get-pip.py

2.执行安装命令

pythonget-pip.py

3.创建连接(否则会报错提示“命令不存在”)

ln-s/usr/local/python2.7/bin/pip/usr/bin/pip

1.3.安装fabric

1.执行安装命令

pipinstallfabric

2.创建连接(否则会报错提示“命令不存在”)

ln-s/usr/local/python2.7/bin/fab/usr/bin/fab

2.脚本编写

本节对fabric用法进行简单介绍,并提供实例以供参考。

2.1.Hello,fab

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

1defhello():
3ff0
2
3print("Hellofab!")
2.执行命令fabhello,结果如下

1#fabhello
2
3Hellofab!
3.文件名不为fabfile.py时需进行指定

1#mvfabfile.pytest.py
2
3#fabhello
4
5
6
7Fatalerror:Couldn'tfindanyfabfiles!
8
9
10
11Rememberthat-fcanbeusedtospecifyfabfilepath,anduse-hforhelp.
12
13
14
15#fab-ftest.pyhello
16
17Hellofab!
4.参数传递

1#vifabfile.py
2
3defhello(name):
4
5print'Hello%s!'%name
6
7
8
9#fabhello:name=fab
10
11Hellofab!
12
13
14
15
16
17#fabhello:fab
18
19Hellofab!

2.2.本地操作

执行本地操作命令使用local

1.fabfile.py脚本内容如下

1fromfabric.apiimportlocal
2
3
4
5deftest():
6
7local('cd/home/')
8
9local('ls-l|wc-l')
2.执行命令fabtest,结果如下

1#fabtest
2
3[localhost]local:cd/home/
4
5[localhost]local:ls-l|wc-l
6
78

2.3.远程操作

执行远程操作命令使用run

1.fabfile.py脚本内容如下

1fromfabric.apiimportcd,run,env,hosts
2
3env.hosts=['192.168.85.99:22','192.168.85.101:22']
4
5env.password='test'
6
7deftest():
8
9withcd('/home'):
10
11run("du-sh")
2.执行命令fabtest,结果如下

1#fabtest
2
3[192.168.85.99:22]Executingtask'test'
4
5[192.168.85.99:22]run:du-sh
6
7[192.168.85.99:22]out:392G.
3ff0

8
9[192.168.85.99:22]out:
10
11[192.168.85.101:22]Executingtask'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
19Disconnectingfrom192.168.85.99...done.
20
21Disconnectingfrom192.168.85.101...done.
3.多服务器混合,需要在不同服务器进行不同操作时,可参考如下脚本

1fromfabric.apiimportenv,roles,run,execute
2
3env.roledefs={
4
5'server1':['root@192.168.85.99:22',],
6
7'server2':['root@192.168.85.100:22',]
8
9}
10
11env.password='test'
12
13@roles('server1')
14
15deftask1():
16
17run('ls/home/-l|wc-l')
18
19@roles('server2')
20
21deftask2():
22
23run('du-sh/home')
24
25deftest():
26
27execute(task1)
28
29execute(task2)
结果如下

1#fabtest
2
3[root@192.168.85.99:22]Executingtask'task1'
4
5[root@192.168.85.99:22]run:ls/home/-l|wc-l
6
7[root@192.168.85.99:22]out:27
8
9[root@192.168.85.99:22]out:
10
11[root@192.168.85.100:22]Executingtask'task2'
12
13[root@192.168.85.100:22]run:du-sh/home
14
15[root@192.168.85.100:22]out:1.4G/home
16
17[root@192.168.85.100:22]out:
18
19Disconnectingfrom192.168.85.99...done.
20
21Disconnectingfrom192.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

转载:http://lovesoo.org/python-fabric-yuan-cheng-zi-dong-bu-shu-jian-jie.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: