Chef infra Chef/Puppet/Jenkins的替代方案是将指令集从服务器推送到客户端,反之亦然?

Chef infra Chef/Puppet/Jenkins的替代方案是将指令集从服务器推送到客户端,反之亦然?,chef-infra,puppet,Chef Infra,Puppet,我想听听你对我在基础设施管理方面面临的问题的建议 问题:有一台服务器,我应该能够创建或连接到多个客户端系统调用的节点,以安装、运行一些脚本、生成报告等 为了解决这个问题,我发现chef/puppet是一个很好的解决方案,但在尝试时,我发现chef和puppet都需要从服务器内部的客户端启动进程,从服务器推送指令。比如说,就像在chef中一样,当我尝试时,我需要创建一个cron作业,启动chef客户机与服务器对话,以查找任何新的烹饪书,并遵循食谱并执行它们。整个基础设施都可以解决这个问题,但我想访

我想听听你对我在基础设施管理方面面临的问题的建议

问题:有一台服务器,我应该能够创建或连接到多个客户端系统调用的节点,以安装、运行一些脚本、生成报告等

为了解决这个问题,我发现chef/puppet是一个很好的解决方案,但在尝试时,我发现chef和puppet都需要从服务器内部的客户端启动进程,从服务器推送指令。比如说,就像在chef中一样,当我尝试时,我需要创建一个cron作业,启动chef客户机与服务器对话,以查找任何新的烹饪书,并遵循食谱并执行它们。整个基础设施都可以解决这个问题,但我想访问服务器,在这个已经与服务器建立了连接的特定节点中安装某某之类的东西

是否有任何现有的框架来实现这一点?我试过厨师和木偶,但对负面结果感到失望,或者我可能错过了一些东西。请纠正我,并提出你的建议。非常感谢

查看Capistrano,看看这是否符合您的需要。除本地计算机外,无需安装

您可以用Ruby编写任务,然后远程执行它们

以下是他们的GitHub回购协议的一个示例:


我不一定要将Capistrano用于基础设施部署,但对于一次性任务,它是有用的。

基于推送的部署不能很好地扩展(到数千个节点)


尽管如此,您仍然可以通过SSH连接(或每个节点上都有一个工作进程的消息队列)触发,例如,
chef client
运行。但是请注意,您不应该让1000个节点同时聚合,因为这可能会给您的Chef服务器带来过多的负载。

在我的研究中,我发现最好的选择是。
根据需要使用ssh。

有一些类似,但使用ruby:。我个人没有尝试过,但它应该比,如果你已经知道ruby的话(假设你知道,因为你尝试过puppet和chef)更容易使用。直接通过SSH工作,您所需要的只是一个可以连接到的盒子。无需额外安装。它还将自己定位为介于(部署应用程序的伟大工具)和/

@StephenKing之间的东西……感谢您的评论。虽然这是一个好主意,但它更像是黑客访问。另外,我正在寻找一个框架,在这个框架中,客户端不需要像chef client这样的部署或安装。这就是为什么我在寻找一个替代方案。@serigo…非常感谢您的投入。这很有帮助。只有一个问题。它如何与客户沟通?我可以在从服务器启动的客户端中安装bin文件吗?我还遇到了另一个选择,叫做Ansible。想听听您对此的想法。在Capistrano GitHub页面上,
Capistrano是一个通过SSH在多台远程计算机上并行执行命令的实用工具和框架。
至于在远程服务器上安装Capistrano,您为什么要这样做?您可能还想研究一下,因为它似乎更适合管理基础设施。它看起来像是Chef的Python实现减去了Chef客户端。如果Evernote、Gawker Media和edX正在使用它,它一定很好。@Serigo。谢谢您的评论。我将调查Capistrano,因为我检查Ansible是否能完美解决我的问题。谢谢你的想法和帮助。@Draco.谢谢你和我分享虎鲸的故事。我会调查的。我实际上是在寻找基于apthon的系统,因为我的脚本是用python编写的。所以我认为Ansible是最合适的。
server 'example.com', roles: [:web, :app]
server 'example.org', roles: [:db, :workers]
desc "Report Uptimes"
task :uptime do
  on roles(:all) do |host|
    info "Host #{host} (#{host.roles.join(', ')}):\t#{capture(:uptime)}"
  end
end