Fabric3是一个用来简化SSH使用的Python库和命令行工具,它支持Python2.7和Python3.4+,你可以用它自动化完成应用部署或者其他系统管理任务。这是原Fabric项目的一个Fork分支,并增加了Python3的支持,同时没有破坏Python2.7的支持。下面我们会介绍这个项目和原Fabric项目的区别。
如果你想从原Fabric项目切换到这个项目,这样做就可以了:
不要忘记对应地升级你的requirements.txt文件:
这个库提供了执行本地或远程任务的很多基本操作、上传下载文件的功能和一些辅助功能,比如input操作,暂停任务等待用户输入内容。
通常的使用方法就是创建一个Python模块,里面写一些任务函数,然后通过fab命令运行。下面是一个只包含一个任务的小例子:
把上面内容保存为文件 fabfile.py(这是fab命令默认使用的Python模块),你可以在一个或者多个服务器上运行fabfile.py中定义的命令。像这样:
除了使用命令行工具fab。Fabric3还可以作为库,被其他Python代码所使用,这样它就为SSH的使用提供了一个高层接口,在这里,Fabric3在底层使用了库Paramiko。
和原Fabric的区别
总体来说这个项目希望跟原Fabric提供一模一样的接口和功能,并且会定期从原项目merge新修改到当前项目。下面是它们之间仅有的一点差别:
1、项目名称叫Fabric3,多了一个数字3。虽然叫3,但它同时支持Python2.7和Python3.4+。
2、版本号和原项目也保持一致,只不过后面增加一个postX标识。所以1.12.0.post1和原项目的1.12.0是等价的。
3、fabric.utils.RingBuffer被移除了,使用标准库的collections.deque来代替它。
4、在Python3版本中,Fabric3基于contextlib.ExitStack构建了它自己的contextlib.nested函数,所以contextlib.ExitStack已经不存在了。我们这样做是有很好的理由的,我们也不推荐你使用它。
5、Fabric3依赖six来做Python2和3的兼容。
6、对于paramiko的依赖,需要版本1.17.0以上。
英文原文:https://github.com/mathiasertl/fabric/
译者:诗书塞外
领取专属 10元无门槛券
私享最新 技术干货