如何设置集中式存储库以将文件分发到服务器

如何设置集中式存储库以将文件分发到服务器

假设我有几十台甚至几百台服务器。将文件的中央副本推送到给定目录并发送到所有服务器的最佳方法是什么?例如,我们更新一个 bash 脚本,并将其放在中央存储库中。然后,我们希望存储库自动将更新的 bash 脚本推送到所有服务器。还假设存储库可以通过公钥 ssh 进入所有服务器。

我知道我可以编写一些经过破解的 shell 脚本来循环遍历服务器列表并进行 scp,但必须有更好的方法来管理它。rysnc 怎么样?我很喜欢 GUI 界面,比如,添加服务器,然后简单地上传一个文件,它就会被 scp 到组中的所有服务器。

谢谢。

答案1

您应该调查一下配置管理系统,例如木偶、Bcfg2、Chef、CFEngine 或其他的

例如,Puppet 涵盖了您列出的所有用例,并提供附加功能,如阶段推出、审计/报告、复杂的工作流程等。

答案2

如果你想要一个能够集中管理服务器配置的重量级解决方案(如果你正在处理数十或数百个盒子,你应该考虑这种事情),请查看厨师或者木偶。这可能对您的环境来说有点过度,并且学习难度很高,但我无法想象以任何其他方式处理那么多盒子。

如果您只有一个 bash 脚本目录,那么您可以挂载该目录的网络共享。

实际上,我认为我们需要更多有关您的环境的信息。您是否直接控制所有这些服务器?您是否在说“我将一些软件分发给一群客户,并希望使该软件保持最新状态”(在这种情况下,您的软件是如何打包的)?您的情况到底是怎样的?

答案3

除了集中配置的其他答案(我们内部使用 chef)..

您还可以使用 svn 文件存储库(例如 subversion),因为它具有文件版本控制功能和 HTTP 前端。

例如,我们有一个在 5 个节点上有 httpd 的 apache 网络服务器场,并且我在 svn repo 中保留了 httpd.conf 和 /etc/httpd/conf.d/www.myserver.com.conf 的副本,这使我们能够轻松地对实例进行更改,并且在出现问题时也可以回滚。

它还代表您的资产数据库中的一个组件,并且如果您自动部署它,则可以用它来确认所有实例都运行相同的配置。

显然,在当今时代,对于具有本地版本控制策略的某些文件服务器,git、mercurial 或 davfs 接口等存储库有很多替代方案。

相关内容