Azure:有没有办法为测试/生产部署不同的实例大小

Man*_*ish 20 virtual-machine azure cloud-hosting

我有一个Windows Azure站点,它部署到两个单独的托管服务.一个用于测试,一个用于生产.当我们准备推向生产时,我们在生产服务中启动暂存部署,推送到那里,然后进行VIP交换.都好.

问题是,现在我们想要从XS Web实例升级,但是在测试部署上花费额外的资金并没有多大意义.有没有办法使用XS实例进行测试,然后说中型实例用于生产?我知道我可以更改每个服务配置的实例数,但我只能更改所有配置的实例大小.

我正在考虑将XS保留在配置中,然后在部署到生产之前记住将其切换到中等.我有什么理由不这样做吗?有没有更好的办法?

干杯!

Igo*_*rek 23

有几种方法可以做到这一点...更简单的方法是对CCPROJ文件进行一些"黑客攻击":

1)为每个与配置名称(Release/Debug/QA/UAT/etc)匹配的环境创建CSDEF文件的克隆:ServiceDefinition.Release.csdef,ServiceDefinition.Debug.csdef等.

2)使用记事本编辑器手动将这些文件添加到CCPROJ文件中

3)定义一个预构建事件命令,将ServiceDefinition.$(ConfigurationName).csdef复制到ServiceDefintion.csdef中

瞧,现在您的ServiceDefintion将适应您正在使用的任何配置.

如果您想获得更多信息或查看更多详细信息,请查看此博客条目,该条目可以帮助您统一切换各种设置

http://www.paraleap.com/blog/post/Managing-environments-in-a-distributed-Azure-or-other-cloud-based-NET-solution.aspx

编辑:这是一个有效的配置.请注意,其他文件包含在"None"类型而不是ServiceDefinition中,以避免多重定义错误.

  <ItemGroup>
    <ServiceConfiguration Include="ServiceConfiguration.Local.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Development 1.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Development 2.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Local Dev 1.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Local Dev 2.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.QA 1.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.QA 2.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Pre-Production 1.cscfg" />
    <ServiceConfiguration Include="ServiceConfiguration.Production.cscfg" />
    <ServiceDefinition Include="ServiceDefinition.csdef" />
    <None Include="ServiceDefinition.Local.csdef" />
    <None Include="ServiceDefinition.Development 1.csdef" />
    <None Include="ServiceDefinition.Development 2.csdef" />
    <None Include="ServiceDefinition.Local Dev 1.csdef" />
    <None Include="ServiceDefinition.Local Dev 2.csdef" />
    <None Include="ServiceDefinition.QA 1.csdef" />
    <None Include="ServiceDefinition.QA 2.csdef" />
    <None Include="ServiceDefinition.Pre-Production 1.csdef" />
    <None Include="ServiceDefinition.Production.csdef" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,不能相信这不是内置的 (2认同)

Dav*_*vre 14

您可以使用Web Publishing TransformXmlMSBuild任务仅转换所需ServiceDefinition的各个部分(就像您现在可以使用Web.Config一样).

  • ServiceDefinition.[BuildConfigName].csdef在ServiceDefinition.csdef文件旁边创建一个文件(您可能需要在文件资源管理器中执行此操作)
  • 像创建Web.config转换一样创建转换文件.我明确设置了根命名空间,以防万一,所以我的根元素是:
  <ServiceDefinition name="Cloud.JobsWorker" 
          xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" 
          xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"
          schemaVersion="2013-10.2.2">
Run Code Online (Sandbox Code Playgroud)
  • 使用以下方法手动将其添加到ccproj:
  <ServiceDefinition Include="ServiceDefinition.csdef" />
  <None Include="ServiceDefinition.Release.csdef" />
Run Code Online (Sandbox Code Playgroud)
  • 在项目的底部包括:
  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
  <PropertyGroup>
    <ServiceDefinitionTransform>ServiceDefinition.$(Configuration).csdef</ServiceDefinitionTransform>
  </PropertyGroup>
  <Target Name="TransformServiceDefinition" BeforeTargets="ResolveServiceDefinition" Condition="exists('$(ServiceDefinitionTransform)')">
    <!-- Generate transformed service config in the intermediate directory -->
    <TransformXml Source="@(ServiceDefinition)" Destination="$(IntermediateOutputPath)%(Filename)%(Extension)" Transform="$(ServiceDefinitionTransform)" />
    <!--Force build process to use the transformed configuration file from now on.-->
    <ItemGroup>
      <ServiceDefinition Remove="ServiceDefinition.csdef" />
      <ServiceDefinition Include="$(IntermediateOutputPath)ServiceDefinition.csdef" />
    </ItemGroup>
  </Target>
Run Code Online (Sandbox Code Playgroud)

当您打包或发布您的云应用程序时,您的csdef应根据您正在使用的构建配置进行转换.

这可以从这里改编:http://blogs.staykov.net/2011/06/windows-azure-configuration-settings.html