【问题标题】:How to deploy two projects in a single solution into two different servers using Release Management DSC如何使用 Release Management DSC 将单个解决方案中的两个项目部署到两个不同的服务器中
【发布时间】:2015-06-30 18:10:19
【问题描述】:

我想在一个解决方案中使用 RM DSC 部署三个项目:

  • Windows 服务
  • 网页界面
  • 和一个数据库项目

对于部署,我有三个 Azure 服务器:

  • 一个 SQL 框
  • 和两个应用服务器

目前我能够在所有三台服务器上成功部署所有三个项目,但是对于老板的一些新方向,我必须按如下方式部署我的项目:

  1. Windows 服务项目到所有三台服务器
  2. WebUI 到其中一个应用服务器中,并且
  3. 将 DB 项目放入 SQL 框中。

我的最终目标是仅复制每个目标服务器上所需的文件。 例如,我只想将 DB 文件保留在 DB 服务器中,类似地,将 WebUI 文件保留在 App 服务器中。

【问题讨论】:

  • 您实际上是在使用 DSC 还是只是简单的 PowerShell?
  • 我正在使用 DSC,在我的解决方案中,我有一个 Deploy 项目,其中包含多个 PowerShell 文件,这些文件定义了部署路径、NodeName、角色等参数...我的最终目标是复制以下文件仅在每个目标服务器上需要。
  • 我避免使用 RM DSC,因为它增加了很多复杂性,对我来说,在部署阶段没有必要或不合适。 DSC 当然很棒,但我觉得它应该在更高的层次上使用来控制服务器的完整配置,而不仅仅是与部署相关的部分。

标签: release release-management ms-release-management dsc automated-deployment


【解决方案1】:

您可能想结帐:continuous-deployment-using-dsc-with-minimal-change

基本上,您可以使用配置来选择“服务器”角色类型并为每个角色安装不同的包。但是,我发现为每个角色类型(即 Web 角色与 DB 角色)设置一个 DSC 来封装功能更容易(即使以一些重复为代价)。

网上有一些 DB install/etc 的例子,这里是一个网站安装的例子:DSC Web Install

不过,我同意 @Graham Smith 的观点,将部署与配置(虚拟机创建和配置)分开。我会把你的 DSC 集中在 配置方面的配置和使用在您的整体 使用msdeploy fluentmigrator 之类的工具进行DB 部署的过程。

编辑:添加了在 Azure 上运行良好的文件上传选项(这种模式也适用于非 azure vm)

我发现上传文件的一种方法是将所需文件包装在 DSC 资源中。例如,

  1. 创建包含要访问的文件的 DSC 资源。我创建了一个示例,其中包含我用于安装的 Erlang here
  2. 在您的 DSC 中导入模块 DSC 资源:Import-DscResource -ModuleName Erlang
  3. 确保 DSC 资源位于您的模块路径中
  4. 使用 Publish-AzureVMDscConfiguration 创建 zip(将包含导入的 DSC 资源)。
  5. 您的 DSC 资源将位于模块路径 "$env:ProgramFiles\WindowsPowerShell\Modules\Erlang\otp_win32_17.5.exe"

【讨论】:

  • 我暂时找不到将特定文件复制到特定服务器上的方法,但这些文件不是大文件,所以现在我将继续我所拥有的。 Grady G Cooper 提供的链接与我最终提供的链接非常相​​似。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
相关资源
最近更新 更多