用于本地/远程命令执行的 Fabric 和 Plumbum python 库的优缺点是什么?当一个库应该使用而另一个不使用时,什么是用例?应该注意哪些差异?
2 回答
背景和建议的比较方法
(哎呀,这是一个死帖)
这两种工具都很有趣,允许本地或远程工作,但它们应该解决的问题(即“术语”)存在差异,并且两者基本上都被现代部署/自动化工具(如 ansible 和许多其他工具)过时了选择了DSL方式,例如terraform)。与更现代的方法相比,它们的优势在于缺乏关于“如何”的“固执”方法,以及更多关于“什么”的方法。
建议的比较标准:
- “Pythonness”与“Shellness”(即每个用户代码的“pythonic”程度)
- 特殊能力
- ROI 与 2 种类型的“自动化”代码维护者(操作与开发,让我们将“QA”放在两者之间)
Fabric(我的最后一项工作是在 1.8 完成的,请稍加注意):
- 更 Pythonic,而不是 shellish,这意味着旧工具和新工具都易于支持 - 即编辑器,IDE 将易于设置
- 许多上下文处理器,许多装饰器,非常好
- 更容易被开发人员采用,更多的牵引力将来自运维人员
铅
- 用户代码可以是 pythonic 或 shellish
- “shell 组合器”是获得高级 shell/perl 人员的杀手级功能,但它使用动态导入,因此编辑器/IDE 的设置有点棘手。
- 由于 1. 由于模仿 Plumbum 中的 shell 结构,您将更容易获得“操作”人员,但请安装良好的编码约定。
结语
使用过这两个工具包(很有趣),然后切换到 ansible - 我有信心声称 - 这两个工具现在都被 ansible 取代了。您可以使用现有的 ansible 模块来完成大多数自动化任务,而您不能 - 您可以为它编写插件或模块(使用任何语言),或者只调用 shell 模块。
我的考虑是这样的:
- 如果您的维护团队具有良好的编程技能(尤其是在 python 中),作为要求 - 您可以使用 Fabric、Plumbum(它有更酷的 hack ;))或 Ansible。
- 如果您有多层次的多团队组织,我会简单地押注 Ansible - 它的学习曲线较低,并且可以轻松成长。
再会。
它们几乎是一样的。Fabric 优于 Plumbum 的最大优势是能够并行连接到多个主机,这在您使用非平凡设置时或多或少是必不可少的。Fabric 还提供了一些 contrib 帮助程序,可让您上传 jinja 模板、上传文件以及将文件传输回本地系统。我个人发现fabric api对于远程服务器的使用要直观得多。
当然是 YMMV,但两者都非常接近 shell 命令。也就是说,我和我的团队专注于大多数配置/部署流程的 ansible。Fabric 确实以牺牲自己的幂等性为代价提供了一些超越 ansible 的能力。