Fabric的使用

一.初识:

Fabric是python下的一个库,是可通过ssh批量管理多台主机的一种方式。不需要在远程主机上安装客户端,这点跟Ansible挺像,在使用上也感觉更方便,会python语言就没其它的问题了。

二.安装(centos):

1.通过包管理器: yum install python-pip

pip install fabric

这种方式很快捷,在源码安装会碰到的许多依赖问题,都可以快速过。

2.通过下源码包,编译安装(好处是可以自定义文件目录了,这种方式的话可以python也一并重新装了,系统自带的往往较旧了)

I:下载python压缩包解压进入相应目录执行:

./configure --prefix=/data/soft/python2

make

make install

mv /usr/bin/python /usr/bin/python_old

ln -s /data/soft/python2/bin/python /usr/bin/python

II:安装setuptools工具 : 进入解压后的文件目录,执行 :  python setup.py install

III:安装pip: 进入pip包解压后的文件目录:执行 python setup.py build & python setup.py instll

IV:安装fabric: pip install fabric

三.Fabric 语法

  1. 常用选项参数:

    -l:显示定义好的任务函数名称

    -f:指定fab入口文件,默认文件名为fabfile.py(即与fabfile.py 在同级目录下,可直接省略-f选项)

    -g:指定网关

    -H:指定主机名,多主机使用逗号隔开

    -P:以异步并行方式运行多主机任务,缺省情况下同步运行;

    -R:指定role以角色区分不同业务组设备;

    -t:设置主机连接TimeOut时间(Second);

    -T:设置远程主机命令执行Timeout时间

    -w:当命令执行失败,发出街区,而非默认中止命令。

    -p:连接主机的密码

2.几个关键全局属性:

env.host:定义目标主机,以Python列表的形式定义,如env.host=[‘host01‘, ‘host02‘]

env.exclude_hosts:排队指定主机

env.user:定义远程用户名

env.port:定义远程端口

env.password:定义远程密码

env.passwords:与上功能一致,区别在于不同主机不同密码的应用场景,需要注意的是,配置passwords时需要配置用户、主机、端口等信息,如:

env.passwords = {

‘[email protected]:22‘ : ‘cccid‘

‘[email protected]:22‘ : ‘aabcd‘

}

env.gateway:定义网关(中转、堡垒机)IP,如env.gateway=‘192.168.19.21‘

env.deploy_release_dir:自定义全局变量,格式:env.+variable_name,如:env.deploy_release_dir、env.age、env.sex等

env.roledefs:定义角色分组,如web组与DB组区别出来:

env.roledefs = {

‘webservers‘ : [‘192.168.1.24‘, ‘192.168.1.27‘]

‘dbservers‘ : [‘192.168.2.24‘, ‘192.168.2.25‘]

}

3.重要接口:

I:run  用来在一台或者多台远程主机上面执行shell 命令。

使用方式如: run(‘ls /data‘)

II:local  执行本机的命令或脚本

使用方式如:local(‘ifconfig‘)

III: get  从远程主机拷贝文件到本地

get下有两个属性:

remote_path ; local_path

使用方式如:get(remote_path="/tmp/xxx.log", local_path="/tmp/xxx.log")  其中的remote_pat 与 local_path 可以省略。

IV:  put  从本地传文件到远程主机

put下有三个属性:

remote_path ; local_path;mode

使用方式:如:upload = put("requirements.txt", "requirements.txt", mode=664)

注:属性名均可省略不写

V: sudo    执行远程主机乌版图下 的sudo命令

VI:cd   执行远程主机的切换目录命令

使用方式如:  cd(‘/data‘)

使用方式如: sudo (‘cat /etc/passwd‘)

VII: lcd  执行本地切换目录的命令

使用方式如:lcd(‘/tmp‘)

4.官方文档下的简易例子:

官网提供了一个简单的例子:

# vi fabfile.py

#!/usr/bin/env python

from fabric.api import run

def host_type():

run(‘uname -s‘)

执行方式:   fab -H 192.168.198.202  host_type

fab 命令缺省情况下引用当前目录下的fabfile.py,若非此文件名,须加上-f参数

5. fabric 的API的所有模块:

from fabric.api import abort, cd, env, get, hide, hosts, local, prompt,

put, require, roles, run, runs_once, settings, show, sudo, warn

四.附加例子-文件上传,多主机批量执行命令与脚本

#! /usr/bin/env python

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

## 也可以 from fabric.api import *  这样省事便捷

env.roledefs={

‘server1‘:[‘[email protected]:22‘,],

‘server2‘:[‘[email protected]:22‘,]

}

env.passwords={

‘[email protected]:22‘:‘*******‘ ,

‘[email protected]:22‘:‘********‘

}

def sendfile():

put(‘/data/wyh/test/haha.sh‘,‘/data‘)

@roles(‘server1‘)

def task1():

run (‘ls /data -l |wc -l‘)

with cd(‘/data‘):

run (‘ls ‘)

sendfile()

run(‘/bin/sh haha.sh‘)

@roles(‘server2‘)

def task2():

run(‘df -lh‘)

with cd(‘/data‘):

run(‘ls ‘)

sendfile()

run(‘/bin/sh haha.sh‘)

def test():

execute(task1)

execute(task2)

执行方式:fab test

备注:脚本文件名为fabfile.py 执行的时候,应先进入脚本所在目录。或者加参数 -f 指定其他脚本文件。

时间: 2024-10-27 19:28:51

Fabric的使用的相关文章

开发者为何对Service Fabric爱不释手?值得关注!

有了它,人人都可开发高可用高伸缩应用.今天小编就为大家介绍一款开发者的"利器"--Service Fabric . 在介绍它之前,先来了解一下它的背景. Service Fabric 是一款应用程序平台,可用于构建基于微服务的应用程序.其核心部分是一个分布式系统平台,用于构建可扩展的可靠应用.在便于封装可部署代码的同时,还内置了微服务最佳实践案例. 快速上市:通过 Service Fabric,开发人员可将重点放在创建可为应用程序增加商业价值的功能上,从而避免了为在基础结构中处理可靠性

Fabric 1.0 ubuntu1704安装过程

1.git安装 apt-get install git 查看当前安装git的版本: git version 验证git是否安装好. 2.golang环境搭建 (1)安装 apt-get install golang (2)查看go的安装路径 go env (3)配置Go环境变量,对应有{GOROOT,GOPATH,PATH}: 对应修改路径: mkdir /opt/gopath/src/github.com/hyperledger/ -p vi /etc/profile   export GOR

fabric教程(1)

fabric 是python 的库和命令行工具,用来提高基于ssh的应用部署和系统管理效率. 首先通过pip安装: pip install fabric 第一个hello world: fabric.py  默认文件 def hello(): print 'hello world!' 执行命令: fab hello 结果: hello world! Done. 第二个带参数: def ehello(name="world"): print 'hello %s' % name 运行: f

Hyperledger Fabric 建立一个简单网络

p { margin-bottom: 0.25cm; line-height: 120% } Building you first network 网络结构: 2个Orgnizations(每个Org包含2个peer节点)+1个solo ordering service 打开fabric-sample下的示例first-network p { margin-bottom: 0.25cm; line-height: 120% } 其中byfn.sh为启动这个网络的启动脚本,启动脚本中除建立一个包含

Hyperledger Fabric 架构梳理

区块链的数据结构 State数据结构 由peer维护,key/value store Ledger  记录了所有成功和不成功的状态更新交易.Ledger被ordering service构造,是一个全排序的交易区块(有效的和无效的)哈希链. Ledger存储在peer节点和orderer的一个子集里.存储在peer上的Ledger和存储在Orderer上的Ledger不同地方在于peer上的Ledger在本地维护一个位掩码(比特位)用来区分有效交易和无效交易. PeerLedger在v1后续版本

HyperLedger Fabric 1.0的Transaction处理流程

如果把区块链比作一个只能读写,不能删改的分布式数据库的话,那么事务和查询就是对这个数据库进行的最重要的操作.以比特币来说,我们通过钱包或者Blockchain.info进行区块链的查询操作,而转账行为就是Transaction的处理.而HyperLedger Fabric在1.0对系统架构进行了升级,使得事务的处理更加复杂. 一.架构 让我们来看看Fabric 0.6到1.0的架构图: 这个图来自IBM微课堂第三讲,我们可以看到原来单一的peer节点在1.0中进行了拆分,分为peer(背书节点和

主流区块链技术特点及Fabric V0.6&V1.0版本特点

声明:文章内容来源于网络. 一.主流区块链技术特点 二.Hyperledger的fabric V0.6总体架构: 对应的0.6版本的运行时架构: 0.6版本的架构特点是: 结构简单: 应用-成员管理-Peer的三角形关系,主要业务功能全部集中于Peer节点:    架构问题:由于peer节点承担了太多的功能,所以带来扩展性.可维护性.安全性.业务隔离等方面的诸多问题,所以0.6版本在推出后,并没有大规模被行业使用,只是在一些零星的案例中进行业务验证: 三.Hyperledger的fabric V

<zz>PYTHON FABRIC实现远程操作和部署

from http://www.cnblogs.com/liujianzuo888/articles/6230691.html fabric title是开发,但是同时要干开发测试还有运维的活 (o(╯□╰)o) 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多. 修复bug什么的,测试,提交版本库(2分钟),ssh到测试环境pull部署(2分钟),rsync到线上机器A,B,C,D,E(1分钟),分别ssh到ABCDE五台机器,逐一重启(8-10分钟)

MySQL: Fabric 搭建 HA

搭建好Fabric之后,就可以在它的基础上创建HA Group. Shard Group.HA+Shard Group等.这里来说明一下如何快速的搭建HA环境. Fabric 192.168.2.234:33060 Master 192.168.2.234:33061 Slave1 192.168.2.234:33062 Slave2 192.168.2.234:33063 1.搭建Fabric环境 如果已搭建好,可以忽略这一步.如果没有搭建可以参考之前的说明. 2.准备3个受管MySQL 实例

Fabric简单使用说明

背景: 关于Fabric的介绍,可以看官网说明.简单来说主要功能就是一个基于Python的服务器批量管理库/工具,Fabric 使用 ssh(通过 paramiko 库)在多个服务器上批量执行任务.上传.下载.在使用Fabric之前,都用Python的paramiko模块来实现需求,相比之后发现Fabric比paramiko模块强大很多.具体的使用方法和说明可以看官方文档介绍.下面写类一个用paramiko封装的远程操作类的模板: #!/usr/bin/python # -*- encoding