Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Fabric:Python远程部署工具

关于FabricFabric是一个Python库和命令行工具,旨在为应用部署和系统管理任务的SSH的流水线式操作,使之更加高效和方便。Fabric提供了一套基本的执行本地和远程shell命令、上传和下载文件的操作,包括一些辅助函数,例如驱动正在运行的用户输入或者放弃执行。Fabric通过把大量频繁使用的SSH操作写入到一个脚本中(fabric.py),来远程执行一些应用部署或者系统维护的任务。Fabric是类似paramiko的一个库,是对paramiko的再次封装,所以比使用paramiko更简单。《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htmPython脚本获取Linux系统信息 http://www.linuxidc.com/Linux/2013-08/88531.htm在Ubuntu下用Python搭建桌面算法交易研究环境 http://www.linuxidc.com/Linux/2013-11/92534.htmFabric的优点:1. 角色定义2. 代码易读3. 封装了本地、远程操作4. 参数灵活,能偶动态指定host/role等,还有并发执行(基于multiprocessing)5. 完整的日志输出安装FabricFabric的安装很简单,可以直接使用pip或者easy_install安装到当前Python环境中,或者下载最新的源码使用"python setup.py xxx"的方式来安装:#pip install fabric使用Fabric--------------------------------------------------------------------------------1 Fabric通过命令行工具fab来执行定义在fabfile.py中的任务,常用的配置和函数如下--------------------------------------------------------------------------------1. 常用的fab命令选项和参数:-l    显示可用的task-H    指定host,多个host用逗号分开-R    指定role,多个role用逗号分开-P    并分数,默认是串行-w    warn_only,默认为遇到异常直接放弃执行并退出-f    指定入口文件,fab默认入口文件是:fabfile/fabfile.py 
2. fabfile.py文件中常用配置和函数:env.host        主机ip,也可以使用fab选项-H参数来指定env.password    SSH密码,若已经设置好无密码登录,则可以忽略env.roledefs    角色分组,如:{"web": ["x", "y"], "db": ["z"]}local("pwd")    执行本地命令lcd("/tmp")        切换本地目录cd("/tmp")        切换远程目录run("uname -s")        执行远程命令sudo("service httpd restart")    执行远程sudo,注意pty选项 
2 任务函数--------------------------------------------------------------------------------Fabric中的任务就是一个个Python函数,通过将上述的函数封装到某一个函数中来执行相应的任务示例:#cat fabfile.pyfrom fabric.api import rundef host_type():    run("uname -s") 
def hello(name="jayzhou"):    print("Hello %s!" % name) 
def combine(name="jayzhou"):    hello(name)    host_type()在执行任务的时候,可以通过fab的命令行参数为任务函数传递参数:#fab hello:name=Rango 
3. 管理远程服务--------------------------------------------------------------------------------1. 获取远程服务器版本信息#cat fabfile.pyfrom fabric.api import envfrom fabric.api import cd
from fabric.api import run
from fabric.api import local
from fabric.api import get
from fabric.api import put 
env.hosts = ["192.168.56.101", "192.168.56.102"]env.user = "root"env.password = "password" 
def get_version():    local("cat /etc/issue")    run("cat /etc/issue")    with cd("/root/"):        put("/home/rango/test.txt", "test.txt", mode=0755)        get("hello_world.txt")    run("ls") 
def get_host_name():    run("hostname")更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-05/101616p2.htm