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

python + fabric 实现批量部署

2016-03-12 20:47 591 查看
Fabric是一个Python(2.5-2.7)库,用于简化使用SSH的应用程序部署或系统管理任务。它提供的操作包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等。

确保安装了pip

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

安装fabric

pip install fabric

在当前目录下新建文件fabfile.py,输入内容如下
def hello():
print("Hello fab!")


执行操作hello:   

fab hello

文件名不为fabfile.py时需进行指定,将fabfile,.py文件重命名为fab.py

fab -f fab.py hello

参数传递
def hello(name):
print "Hello %s" % (name)


执行操作hello:

fab hello:xiaoming

本地操作

执行本地操作命令使用local
from fabric.api import local

def test():
local('cd /home/dev')
local('ls')


执行本地命令 

fab test

远程操作

执行远程操作命令使用run

例如,为远程2台服务器,安装pip
from fabric.api import cd, run, env, hosts

env.hosts = ['192.168.101.131:22', '192.168.101.129:22']
env.user = 'root'
env.password = 'toor'

def install_pip():
run('mkdir -p /y01')
cd('/y01')
run('wget https://bootstrap.pypa.io/get-pip.py') run('python get-pip.py')

以上为多台服务器执行相同操作,当多台服务器执行不同操作时:

from fabric.api import env, roles, run, execute

env.roledefs = {
'server1' : ['root@192.168.101.131:22'],
'server2' : ['root@192.168.101.129:22']
}

env.user = 'root'
env.password = 'toor'

@roles('server1')
def task1():
run('ls /home')

@roles('server2')
def task2():
run('du -sh /home')

def test():
execute(task1)
execute(task2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: