Fabric vs Plumbum:差异、用例、优缺点

Fabric vs Plumbum: differences, use cases, pros and cons

用于 local/remote 命令执行的 Fabric 和 Plumbum python 库的优缺点是什么?当一个库应该被使用而另一个不是时,有哪些用例?应该注意哪些区别?

它们几乎是一回事。 fabric 相对于 plumbum 的最大优势是能够并行连接到多个主机,这在您使用重要设置时或多或少是必不可少的。 fabric 还提供了一些 contrib 帮助程序,可让您上传 jinja 模板、上传文件以及将文件传输回本地系统。我个人认为 fabric api 在使用远程服务器时更加直观。

YMMV,当然,但两者都非常接近 shell 命令。也就是说,我和我的团队专注于大多数配置/部署流程的 ansible。 Fabric 确实提供了一些超越 ansible 的能力,但代价是你必须自己实现幂等性。

背景和建议的比较方法

(哎呀死了post)

这两种工具都很有趣,允许本地或远程工作,但在它们应该解决的问题上存在差异,即 "terminology",并且两者基本上都被现代 deployment/automation 淘汰了工具(如 ansible,以及许多其他选择 DSL 方式的工具,例如 terraform)。 他们相对于更现代的优势在于缺乏 "opinionated" 关于 "how" 的方法,更多关于 "what".

建议的比较标准:

  1. "Pythonness" 与 "Shellness"(即 "pythonic" 每个用户代码的区别)
  2. 特殊能力
  3. 您的 "automation" 代码的 2 种维护者的投资回报率(运维与开发,我们将 "QA" 置于两者之间)

Fabric(我的最后一个作品是在 1.8 完成的,请稍等片刻):

  1. 更多 pythonic,比 shellish,这意味着旧工具和新工具都很容易支持 - 即编辑器,IDE 很容易设置
  2. 很多上下文处理器,很多装饰器,非常好
  3. 更容易被开发人员采用,更多的牵引力将来自运维人员

  1. 用户代码可以是 pythonic 或 shellish
  2. "shell combinators" 是让高级 shell/perl 人员加入的杀手级功能,但它使用动态导入,因此 editors/IDEs 设置起来有点棘手。
  3. 由于 1。由于模仿了 Plumbum 中的 shell 构造,您将 'ops' 人更容易上手,但请安装良好的编码约定。

结语

使用这两个工具包(有很多乐趣)然后切换到 ansible - 我有信心声称 - 这两个工具现在都被 ansible 取代了。 您可以使用现有的 ansible 模块完成大多数自动化任务,以及您不能完成的任务 - 您可以为其编写插件或模块(使用任何语言),或者只需调用 shell module.

我的考虑是这样的:

  • 如果您的维护人员团队具有良好的编程技能水平(尤其是 python),作为一项要求 - 您可以使用任何一种结构,Plumbum(它有更多很酷的技巧;) ) 或 Ansible。
  • 如果你有多层多团队组织,我会简单地打赌 Ansible - 它具有较低的学习曲线,并且可以轻松成长。

美好的一天。