Puppet VS Ansible + 什么是最好的自动远程任务工具

mai*_*ash 4 linux puppet ansible

有许多用于自动化任务的远程工具,如 puppet 或 ansible

我的目标是在 Linux 机器上执行许多远程任务:

  1. 运行 Linux 命令块,

  2. 将文件从主机复制到远程 Linux 机器

  3. 在远程 Linux 机器上运行脚本

等等

sys*_*138 8

自动化和远程命令是完全不同的用例。选择此类工具时要考虑的事情是您需要多快的机器群达到相同的状态,以及您计划更改命令集的速度。

Puppet 和 Chef(可能还有其他配置管理)系统是:

  • 松散收敛。一切都可能需要半小时才能看到更新。有时没关系。有时这不是。
  • 不要处理临时命令。如果您需要运行在一个给定的目录中的git拉现在,这样做需要的努力相当数量。
  • 用于以编程方式确定机器类型的稳健方法。这缓解了“什么需要什么”的问题。
  • 主要基于代理。节点轮询中央系统以获取更新,而不是中央系统按计划调度更新。这是“松散一致性”的很大一部分。

Ansible 和其他非代理系统:

  • 允许临时命令作为主要功能。需要apt-get update openssl在所有东西上运行吗?简单!
  • 允许更紧密的收敛。你既可以在 30 分钟内完成,也可以在所有事情上立即完成
  • 一般需要库存管理流程。像 puppet 这样的东西可以用来做一些事情,比如在 RAMSIZE >= 2048GB 的​​机器上部署 nginx并且它适用于任何这样的系统,Ansible 等需要被告知这个系统需要 nginx。这使需要什么问题变得复杂。

我不打算讨论可扩展性,因为所有这些都可以很容易地处理 1000 个节点。当您进入 10,000 个节点时,情况会有所不同。

我知道除了 Ansible 之外,还使用类似 Puppet/Chef 的系统的已部署系统。Puppet/Chef 用于维护系统的基线配置,ansible 系统用于远程命令和需要更严格一致性的任务(例如应用程序代码部署)。有时最好是两者兼而有之。