fabric安装及试用

Fabric 是什么?

如 README 所说:

Fabric 是一个 Python (2.5-2.7) 的库和命令行工具,用来提高基于 SSH 的应用部署和系统管理效率。

更具体地说,Fabric 是:

  • 一个让你通过 命令行 执行 无参数 Python 函数 的工具;

  • 一个让通过 SSH 执行 Shell 命令更加 容易 、 更符合 Python 风格 的命令库(建立于一个更低层次的库)。

下面我们就来看看它是怎么用的:

首先是安装,我们用yum来install一下就好了:

yum install fabric

安装完之后来直接在命令行里敲下面的语句,看看奏不奏效(如果成功则会打印出版本号):

python -c "from fabric.api import * ; print env.version"

奏效后我们直接来编写一个小程序来试试水:

vim fabric_test.py

编辑的内容如下:

#coding:utf-8
from fabric.api import *

env.user = 'username'
env.password = 'yourPassword'
hosts = ['ip1:port1',
         'ip2:port2']


#设置服务器登录参数
env.roledefs={
    #操作一致放一组,一组执行同一个操作
    'server1':hosts,
    'server2':['ip3:port3']
}

#本机操作
def localtask():
    local('echo "this is a local task"')

#server1组操作
@roles('server1')
def task1():
    run('whoami')

#server2组操作
@roles('server2')
def task2():
    run('df -h')

def doworks():
    execute(localtask)
    execute(task1)
    execute(task2)

注意要将username,yourPassword,ip和port修改成你对应的要登录的系统的账号,密码(最好是在指定的部署服务器上用证书配置无密码的ssh连接,这样就不用密码了,而且密码直接写在代码里也不安全,这里只是测试,所以才这样写而已),ip和端口号

 

附1.Fabfile之env对象

env对象的作用是定义fabfile的全局设定,下面对各属性进行说明:

env.hosts   #定义目标主机,可以用IP或主机名表示,以python的列表形式定义。如env.hosts=['192.168.1.21','192.168.1.22']
env.exclude_hosts   #排除指定主机,如env.exclude_hosts=['192.168.1.21']
env.user   #定义用户名,如env.user='root'
env.port   #定义端口,默认为22,如env.port='22'
env.password   #定义密码,如env.password='123456'
env.passwords  #定义多个密码,不同主机对应不同密码,如:env.passwords = {'root@192.168.1.21:22':'123456','root@192.168.1.22:22':'654321'}
env.gateway   #定义网关(中转、堡垒机)IP,如env.gateway='192.168.1.23
env.roledefs   #定义角色分组,比如web组合db组主机区分开来:env.roledefs = {'webserver':['192.168.1.21','192.168.1.22'],'dbserver':['192.168.1.25','192.168.1.26']}

env.deploy_release_dir   #自定义全局变量,格式:env. + '变量名称',如env.age,env.sex等

 

附2.Fabric常用API

前面的简单实例中使用了api函数run,下面再列举几个常用的api。

local    #执行本地命令,如local('uname -s')
lcd      #切换本地目录,如lcd('/home')
cd       #切换远程目录
run     #执行远程命令
sudo   #sudo方式执行远程命令,如sudo('/etc/init.d/httpd start')
put     #上次本地文件导远程主机,如put('/home/user.info','/data/user.info')
get     #从远程主机下载文件到本地,如:get('/data/user.info','/home/user.info')
prompt  #获得用户输入信息,如:prompt('please input user password:')
confirm  #获得提示信息确认,如:confirm('Test failed,Continue[Y/N]?')
reboot   #重启远程主机,如:reboot()

@task   #函数修饰符,标识的函数为fab可调用的,非标记对fab不可见,纯业务逻辑
@runs_once   #函数修饰符,标识的函数只会执行一次,不受多台主机影响

 

写完后,直接运行一下:

fab -f fabric_test.py doworks

结果(大概的样子):

[localhost] local: echo "this is a local task"
this is a local task
...

Done.
Disconnecting from *****@********... done.

至此,fabric的试用就结束了,想深入学习的话,可以查看fabric的中文文档:

http://www.phperz.com/article/15/1005/161116.html

当然,你也可以看官方的文档:

http://www.fabfile.org/

转载于:https://my.oschina.net/lonelycode/blog/839009

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值