3

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

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

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

是否有任何现有的框架来实现这一点?我尝试了厨师和木偶并且对负面结果感到沮丧,或者我可能遗漏了他们的一些东西。纠正我,并提出您的建议。提前感谢!

4

4 回答 4

2

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

于 2013-07-02T21:47:14.880 回答
1

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

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

于 2013-07-02T09:21:33.450 回答
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 进行基础设施部署,但对于一次性任务它很有用。

于 2013-07-02T05:14:02.777 回答
0

There is something like Ansible, but using ruby: Orca. I personally didn't try it, but it should be easier to use than Ansible, if you already know ruby (assuming, you do, because you tried puppet and chef). Orca works directly over SSH, all you need is a box that you can connect to. No need for additional installations. And it also positions itself as something in between of Capistrano (a great tool for deploying applications) and Chef / Puppet.

于 2013-07-03T06:18:26.947 回答