我想同时在多台服务器上运行命令。我知道 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并行。