有许多自动化任务的远程工具,如木偶或ansible
我的目标是在Linux机器上执行许多远程任务
如:
>运行Linux命令块,
>将文件从主机复制到远程Linux机器
>在远程Linux机器上运行脚本
等等
解决方法
自动化和远程命令是相当不同的用例.选择这样的工具时要考虑的事项是,您需要多长时间才能使整个机器群达到相同的状态,以及您计划更改命令集的速度有多快.
Puppet和Chef(可能还有其他Configuration Management)系统是:
>松散的趋同.在所有内容都看到更新之前,可能需要半小时.有时那没关系.有时候非常不是.
>不要处理ad-hoc命令.如果你现在需要在给定目录中运行git-pull,那么这需要花费相当多的精力.
>以编程方式确定机器类型的强大方法.这简化了“需要什么”的问题.
>主要基于代理.节点轮询中央系统进行更新,而不是中央系统按计划调度更新.这是“松散一致性”事物的很大一部分.
Ansible和其他非成员系统:
>允许ad-hoc命令作为主要功能.需要在所有内容上运行apt-get update openssl吗?简单!
>允许更紧密的收敛.你可以在30分钟内做到这一点,并且现在对所有事情做正确的血腥.
>通常需要库存管理流程.像puppet这样的东西可以做一些事情,比如在RAMSIZE> = 2048GB的机器上部署Nginx,它可以用于任何这样的系统,Ansible等需要被告知这个系统需要Nginx.这使得需要什么问题变得复杂.
我不打算扩展性,因为所有这些都可以很容易地处理1000个节点.当你进入10,000个节点时,情况会有所不同.
除了Ansible之外,我知道部署的系统使用类似Puppet / Chef的系统. Puppet / Chef用于维护系统上的基线配置,ansible系统用于远程命令和需要更严格一致性的任务(例如应用程序代码部署).有时最好的是两者.