我很惊讶RightScale,Scalr或enStratus没有被提及。这些解决方案中的大多数填补了SOA交付的空白,并根据需要灵活地部署了SOA部分。
我知道这不是100%的胜利,但如果我理解你的问题,它会有所帮助。我们使用定制的烹饪书(显然),但具有角色意识。我的意思是,如果我们启动一个新的应用服务器,我们的负载均衡器会自动更新新的服务器信息。您可以使用以实现此目的
appservers = search(:node, "role:applicationServer")
并根据合适的方式进行定制。
至于自动缩放,我们有自己的python脚本来处理它。
我没有在Windows上使用Puppet,但是Puppet与Facter捆绑在一起,后者提供对自定义事实的支持 - http://puppetlabs.com/blog/facter-part-1-facter-101
所有facter的变量都可用于puppet清单,因此您可以创建在不同环境中执行不同操作的运行列表。
此外,您提到了应用程序而不是节点的配置 - 这就是Puppet模块的用途,您可以轻松创建自己的配置。这将允许不同的节点应用某些模块,忽略其他模块,甚至确保模块不存在。
这确实是一个常见的问题,并且葡萄藤上的暗示似乎暗示Opscode(现在我称之为Chef)已经意识到这一点并且正在研究解决方案。希望这是我们在Chef 12中看到的东西。
问题是Chef是一个配置管理系统。它不是严格意义上的配置或编排产品。刀试图解决这个问题,但规模极其简陋。其他产品,如Ansible和Puppet,更有能力解决这个问题。但同样,即使它们也不是严格的编排产品,但仍然不足。
我自己没有机会使用它,但你应该看看 http://deis.io/ 。它是一个开源的,轻量级的平台即服务,似乎解决了编排问题。它可能就是你要找的东西。
另一种选择是使用类似的东西 https://github.com/coreos/etcd 用于库存管理。它允许您拥有一个非常灵活的集中式系统库存API,并提供超过Chef自己的搜索数据。有了它,您可以编写食谱来查找其他系统和服务,并采取措施连接它们。它开始变得很好,但是你总是可以让Chef执行一个ssh命令来执行远程实例上的命令。
无论如何,只是几个建议。希望有所帮助。
我想在环境中运行安装,而不是单个节点。在内部,配置管理软件会对哪个节点实际安装服务做出某种明智的决定,并相应地更新服务依赖性
您正在寻找PAAS解决方案(平台即服务)。厨师和傀儡都不会给你这个。它们是主要用于自动化基础架构部署的工具。但是,它们可用于安装应用程序,因为您已经注意到它们采用了一种非常“节点”的方法。
我不知道任何用于Windows的开源PAAS解决方案,因此我建议调查Microsoft Azure等托管解决方案的商业替代方案。