假设我有几十个甚至数百个服务器。 将文件的中央副本推送到给定目录到所有服务器的最佳方法是什么? 例如,我们更新一个bash脚本,并把它放在一个中央仓库。 然后,我们希望回购将更新的bash脚本自动推送到所有服务器。 还假设回购可以通过公钥ssh进入所有的服务器。
我知道我可以掀起一些被黑客攻击的shell脚本来循环访问服务器和scp列表,但是必须有更好的方法来pipe理这个脚本。 如何rysnc? 会喜欢一个GUI界面,就像添加服务器,然后简单地上传一个文件,然后将其分发到组中的所有服务器。
谢谢。
你应该研究像Puppet ,Bcfg2,Chef,CFEngine或其他configurationpipe理系统
傀儡例如涵盖了所有列出的用例,并提供了额外的function,如阶段推出,审计/报告,复杂的工作stream程等。
如果你想要一个能够集中pipe理服务器configuration的重量级解决scheme(如果你正在处理几十个或几百个盒子,你应该看看这样的事情),看看厨师或Puppet 。 这对您的环境来说可能是过分的,而且学习曲线陡峭,但是我无法想象以任何其他方式处理那么多盒子。
如果你只有一个bash脚本的目录,你可以挂载该目录的networking共享。
其实,我想我们将需要更多关于你的环境的信息。 你有直接控制所有这些服务器? 你是否说“我将一些软件分发给一大批客户,并希望保持这个软件是最新的”(在这种情况下,你的软件是如何打包的)? 你的情况到底是什么?
除了集中configuration的其他答案(我们使用厨师内部)..
你也可以使用像svn这样的svn文件存储库来存储它的文件版本pipe理function和HTTP前端。
例如,我们在5个节点上有一个带有httpd的Apache Web服务器场,我在svn回购中保存了httpd.conf和/etc/httpd/conf.d/www.myserver.com.conf的副本,这使我们轻松实现对实例的更改,并在启动的情况下还原。
它也代表您的资产数据库中的一个组件,如果您自动部署,则可用于确认您的所有实例正在运行相同的configuration。
很显然,在现代,有一大堆的替代品,比如git,mercurial或者davfs接口到一些文件服务器,这些文件服务器有一个本地的版本策略。