八达通部署到相同的环境和不同的服务器

时间:2015-09-14 12:16:34

标签: teamcity octopus-deploy

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

所以,总结一下:

  • 它部署到相同的环境(PreProd)
  • 它被部署到链接到该环境的两个不同服务器
  • 两台服务器之间的两个web.config文件之间有小的变化。

我已经有web.preprod.config转换为web.config。这是否意味着我需要创建更多的配置文件,即。 web.server1.preprod.configweb.server2.preprod.config还是有另一种清洁方式吗?这是一个不同的整个部分,不仅仅是appSetting。

2 个答案:

答案 0 :(得分:1)

这样的问题的一般方法确实是创建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即可使两个条目有效。

答案 1 :(得分:1)

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

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

例如;如果您在预生产负载均衡器中引入了第3个节点怎么办?这需要代码更改,构建,版本缓冲和包,如上所述,这可以完全避免。