如何使用 Release Management DSC 将单个解决方案中的两个项目部署到两个不同的服务器中

How to deploy two projects in a single solution into two different servers using Release Management DSC

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

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

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

  1. Windows服务项目进入全部三台服务器
  2. WebUI 到其中一个应用程序服务器和
  3. 将数据库项目放入SQL框中。

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

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

基本上,您可以使用配置来选择 "server" 角色类型并为每个角色类型安装不同的包。但是,我发现每个角色类型都有一个 DSC(a.k.a Web 角色与 DB 角色)来封装功能(即使以一些重复为代价)。

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

不过,我同意@Graham Smith 关于将部署与供应(虚拟机创建和配置)分开的观点。我会把你的 DSC 集中在 提供和使用整体配置的第二步 使用 msdeploy and a tool like fluentmigrator 为数据库部署的过程。

编辑: 添加了在 Azure 上运行良好的文件上传选项(非 azure 虚拟机也可以遵循此模式)

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

  1. 创建包含您要访问的 file/files 的 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"