提供服务器环境作为安装在不同服务器上的软件包的最佳方法是什么?

我在AWS云上运行了一些软件,我希望能够将此软件包作为内部部署解决scheme提供,以便任何人都可以在自己的服务器上进行configuration。 将这个过程尽可能无痛化的最好方法是什么?

在某些背景下,我们在Amazon Linux服务器上运行node.js。 除了我们的自定义代码之外,我们还使用了几个开源的NPM软件包。 我们也使用MongoDB作为会话存储,并将redis作为caching。 目前这只是一个例子,但是我们提供的解决scheme将在每台服务器上安装mongodb和redis,以及在多个应用程序服务器之前安装Haproxy负载平衡器服务器。 我们使用EBS来存储我们的MongoDB数据。

这实际上是一个产品开发问题,而不是系统pipe理问题。

这就是说, ceejayoz所说的几乎是:把它作为咨询服务或者预制的设备来提供。

我的select可能是物理设备或VMWare设备,它将您的软件安装在您可以轻松pipe理的操作系统上,而且完全是为了客户而销售的:您的团队将不得不pipe理端到端的系统。

随着您扩大规模,这可能包括“一盒式”解决scheme,在这种解决scheme中,您可以在自备式机架中向客户推销集成环境(他们所做的只是提供电力和networking连接,将其放入环境中)或者您提供一个VMWare集群的解决scheme,实现相当于机架式机箱。

对于这样一个复杂的系统,我会研究configuration和configuration工具。 前者有几十个select,而木偶和cfengine是后者的两个典型例子。

不要指望全面自动化是一件容易的事情。 如果你不希望产生很多的系统副本,并手动pipe理它们,你可以使用一些“bootstrap”bash脚本在新安装的系统上运行。