章鱼部署到相同的环境和不同的服务器

Octopus deployment to same environment and different servers

我有一个章鱼部署需要去一个负载平衡的环境但是两个服务器之间的配置有一些小的变化。

所以,总结一下:

我已经有一个 web.preprod.config 可以转换成 web.config。这是否意味着我需要创建更多配置文件,即。 web.server1.preprod.configweb.server2.preprod.config 还是有另一种更简洁的方法?这是一个完全不同的部分,而不仅仅是一个 appSetting。

解决此类问题的一般方法确实是创建 web.server*.preprod.config 或 local.config。我建议查看配置中到底有什么不同,以及为什么。尝试找到可以合并的东西。例如: 如果一个区别是驱动器号的不同,并且您的配置包含这些条目:

C:/a/b/c.txt C:/a/b/d.txt

尝试将这些条目拆分为

驱动=C 驱动器:/a/b/c.txt

在那种情况下,您只需将 drive=C 更改为 drive=D 即可使两个条目生效。

过去在类似场景中对我来说效果很好的解决方案(特别是 OctopusDeploy)是使用 web.{environment}.config 转换来获取正确配置结构,但要使用variable substitution并在转换文件中定义占位符以保持运行- Octopus 中特定于时间环境的定义。如何分解替换语法实际上取决于您的配置,但您可以使用 Octopus 变量的机器范围功能来控制注入的实际值。

这个场景很好地说明了 web.config 转换开始模糊配置管理的界限;特定于环境的配置实际上是 Octopus 的领域(或者更具体地说,是一个集中式配置存储),但是这里提出的解决方案是将它从 Octopus 中取出并返回到源存储库中,这是 Octopus 实际设计的问题之一解决。

例如;如果您在生产前负载均衡器中引入了第三个节点怎么办?这需要代码更改、构建、版本升级和打包,鉴于上述情况可以完全避免。