替换Chef / Puppet / Jenkins将指令集从服务器推送到客户端而不是反过来?

时间:2013-07-01 21:43:52

标签: chef puppet

我希望听到您对我在基础架构管理方面遇到的问题的建议。

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

为了解决这个问题,我发现厨师/木偶是一个很好的解决方案但是在尝试时我发现厨师和木偶都需要从服务器内的客户端启动服务器的指令。当我尝试时像厨师一样说,我需要创建一个cron作业,启动厨师 - 客户与服务器交谈以查找任何新的食谱并按照食谱执行它们。整个基础设施适合这个问题,但除了我想访问服务器以说安装在这个已经与服务器建立连接的特定节点中的东西。

是否有任何现有框架可以实现这一目标?我尝试了厨师和傀儡,并对负面结果感到沮丧,或者我可能遗漏了一些东西。纠正我并善意地提出你的建议。谢谢你!

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

查看Capistrano http://www.capistranorb.com/并查看是否符合您的需求。除本地计算机外无需安装。

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

以下是他们的GitHub回购中的示例: https://github.com/capistrano/capistrano/blob/v3/README.md#tasks

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

我不一定会使用Capistrano进行基础架构部署,但对于一次性任务,它很有用。

答案 2 :(得分:1)

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

尽管如此,你仍然可以触发,例如chef-client运行SSH连接(或每个节点上带有worker的消息队列)。但请注意,您不应该让1000个节点同时收敛,因为它可能会给您的Chef服务器带来过多负载。

答案 3 :(得分:0)

类似于Ansible,但使用ruby:Orca。我个人没有尝试过,但它应该比Ansible更容易使用,如果你已经知道红宝石(假设你这样做,因为你尝试过木偶和厨师)。 Orca直接通过SSH工作,您只需要一个可以连接的盒子。无需额外安装。它还将自己定位为Capistrano(部署应用程序的绝佳工具)和Chef / Puppet之间的某种内容。