我可以在这种情况下使用 Capistrano 吗?

我可以在这种情况下使用 Capistrano 吗?

我想同时在多台服务器上运行命令。我知道 mcollective、capistrano、clusterssh 和 pconsole 是可以快速同时管理多台服务器的工具。示例命令:

du /var/log | sort -n | tail -5

我研究过 MCollective,但它太难了,不适合直接运行 SSH 命令。因此,pconsole 和 clusterssh 似乎更适合我。

我知道 capistrano 是一款非常流行的工具。但我确实想知道,它在这样的用例中是否很好用?例如

  • 通过 bash 命令测试监控软件是否安装
  • yum 更新木偶
  • 在备份软件的配置文件中执行 sed-replace。

我关心的是运行 SSH 命令后得到的结果,而不是只运行 SSH 命令而不再收到任何消息。这将有助于同时快速检查多台服务器上的情况。

我知道我可以使用 Puppet 来更改服务器上的特定内容,但是它不太擅长报告统计信息,例如哪些目录使用了服务器上最多的空间。

答案1

可以说,你的监控工具应该能够报告一段时间内的磁盘使用情况;但是,如果你想对目标主机组运行直接命令,我建议使用ansible对于这类任务

  • 服务器中无需配置。
  • 您只需要ansible在要运行命令的机器上安装即可。
  • 它支持sudo

    -K, --ask-sudo-pass
       Prompt for the password to use with --sudo, if any
    
  • 您可以定义运行多少个并行任务:

    -f NUM, --forks=NUM
       Level of parallelism.  NUM is specified as an integer, the default is 5.
    
  • 许多功能,请查看项目网站,它有非常详细的文档。

另一个在不同主机上并行运行任务的命令行工具是GNU并行

答案2

我喜欢用函数尤其是当与我的函数外壳。它为您提供一个 shell,该 shell 可以在您希望它运行的任何主机上运行您提供的任何命令。

它不像 ansible 那样零配置,因为它需要每台服务器上都有一个守护进程。但好处是它不需要 SSH,并且可以通过中间主机委托命令,从而允许您使用堡垒主机在许多安全区域中使用命令。

相关内容