Fabric批量远程执行操作

标签: fabric | 发表时间:2015-06-13 09:20 | 作者:kongxx
分享到:
出处:http://blog.csdn.net

最近有个需求就是要在一个集群的多个机器上运行一些命令,比如启动、停止服务,运行一些脚本收集一些数据等,于是找到了python的一个框架Fabric。Fabric是一个Python库,用于简化使用SSH的应用程序部署或系统管理任务。
它提供的主要功能包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等。

安装

在我的CentOS上,运行下面的命令就可以简单安装

  yum install http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install fabric.noarch

测试脚本

在当前目录下创建fabfile.py文件,fabric默认总是使用fabfile.py作为它的配置文件,当然也可以使用-f来指定使用的配置文件,内容如下:

  def hello():
    print("Hello fab!")

然后运行”fab hello”,可以得到如下结果
Hello fab!

下面看看参数怎样传递

  def hello(name):
    print 'Hello %s!'%name

然后运行”fab hello:name=fab”,可以得到如下结果
Hello fab!

执行本地操作

  from fabric.api import *
def test():
    local('cd /tmp')
    local('ls -l')

执行远程操作

  from fabric.api import *
env.hosts=['kongxx@host1:22','kongxx@host2:22']
env.password='Letmein'
def test():
    with('cd /tmp'):
        run('ls -l')

其中env.hosts定义了要远程执行的机器列表,env.password是要登录远程机器的密码。

批量远程启停服务

基本命令知道咋用了,下面就看看怎样实现我需要的功能,由于我需要批量在200多台机器上批量启动服务和执行命令,所有这些机器都配置了免密码登录,这样就不需要配置env.password了

机器列表文件

首先准备了一个机器列表文件,比如把所有机器名写在/tmp/hosts文件中,每行一个机器名,类似如下

  host1
host2
host3
...

fabfile.py文件

  from fabric.api import *
import os

def set_hosts():
    f=open('/tmp/hosts', 'r')
    env.hosts=f.readlines()
    f.close()

@parallel(pool_size=5)
def start():
    print("start service")
    prepare_hosts()
    run('/etc/init.d/myservice start')

@parallel(pool_size=5)
def stop():
    print("stop service")
    prepare_hosts()
    run('/etc/init.d/myservice stop')

@parallel(pool_size=5)
def status():
    print("check service status")
    prepare_hosts()
    run('/etc/init.d/myservice status')

这里由于机器比较多,因此使用了“@parallel(pool_size=5)”来使fabric使用并发方式执行,当然也可以使用命令行参数指定使用并发方式“fab -P -z 5 ”。
运行下面命令即可批量执行启动、停止、查询状态操作

   fab set_hosts start|stop|status

转载请以链接形式标明本文地址
本文地址: http://blog.csdn.net/kongxx/article/details/46480579

作者:kongxx 发表于2015/6/13 9:20:42 原文链接
阅读:35 评论:0 查看评论

相关 [fabric] 推荐:

Hyperledger Fabric V1.0 跳坑玩耍

- - SegmentFault 最新的文章
       最近有个项目需要用到超级账本的概念,随后在网上查阅相关的信息. 最后相中了 Fabric作为实验玩耍的目标. 要玩就要玩最新的啦,所以舍弃了v0.6的版本,但是截至这篇文章摸出来,v1.0还处于alpha阶段. 以下环境的搭建步骤很大一部分来自于 hyperledger-fabric.readthedocs.io,英语好的同学也可以直接看那边的教程.

Fabric批量远程执行操作

- - CSDN博客推荐文章
最近有个需求就是要在一个集群的多个机器上运行一些命令,比如启动、停止服务,运行一些脚本收集一些数据等,于是找到了python的一个框架Fabric. Fabric是一个Python库,用于简化使用SSH的应用程序部署或系统管理任务. 它提供的主要功能包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等.

配置 fabric 穿越跳板机

- - 膘叔
在转这篇文章的时候,我觉得 很懒,所以我几乎没有排版就直接ctrl+c,ctrl+v就过来了. 下面是正文,链接来源是:https://mozillazg.com/2013/12/python-fabric-gateway.html. 说实话,跳板机给研发的日常工作添加了些许麻烦. 幸好 fabric 提供了穿越跳板机的功能,使跳板机不再影响我们的工作.

基于fabric和hg的自动化部署

- - CSDN博客推荐文章
fabric是个很好用的自动化部署工具,虽然功能比起puppet,saltstack之类要弱一些,但胜在用python,而且免安装服务端. 当然你要说docker更好我也同意,然而我是经常使用FreeBSD的,而且还有一些32位的低配系统,并不适合用docker. 自动化部署的目的主要是简化手工部署的麻烦,包括初次安装部署和代码修改后的更新部署.

Hyperledger Fabric V1.0 环境搭建 - 个人文章 - SegmentFault

- -
学习区块链技术有段时间了,刚好晚上有空把超级账本子项目fabric v1.0部署运行及开发环境的搭建过程整理下,编写的内容主要参照官方文档. 由于fabric项目目前还处于孵化阶段,正式版本预计5月份才会到来. 近期官方示例和文档也频繁更新中,本文内容主要基于源码中 “examples” 和 “devenv” 来完成fabric入门示例的快速部署运行和统一开发环境的搭建.

Hyperledger Fabric 1.0,基于区块链的分布式账本

- - 开源中国社区最新新闻
由 Linux 基金会发起创建的开源区块链分布式账本 —— Hyperledger Fabric,已经迎来了 1.0 版本. 该项目着重于性能和可靠性,以及推动区块链和分布式账本技术的跨行业协作. Hyperledger Fabric 可用于全球供应链管理、金融交易、资产账和去中心化的社交网络等场景,但无意以此来构建一种加密货币.

Twitter推移动应用开发工具Fabric 阿里百度已在用

- - TechWeb 今日焦点 RSS阅读
Twitter推移动应用开发工具Fabric 阿里百度已在用. 【TechWeb报道】10月23日消息,据国外媒体报道,Twitter周三发布了一款免费的移动应用开发者工具包——Fabric,旨在帮助开发者更好地编程以及增加公司收益. Twitter周三召开了首届面向移动应用开发者的“一对多消息服务”大会,并在会上推出了Fabric平台.