我正在使用ARM模板来部署 Cloud 服务 . 部署到临时插槽后,我将其激活,从而触发VIP交换 .
当我想回滚并切换升级和 生产环境 阶段时,我再次激活分段的部分 .
问题是它需要我知道暂存槽中的部署标签是什么 .
"resources" : [{
"apiVersion" : "2014-06-01",
"type" : "Microsoft.ClassicCompute/domainNames",
"name" : "[parameters('serviceDomainName')]",
"location" : "[variables('resourceLocation')]",
"resources" : [{
"apiVersion" : "2015-12-01",
"name" : "[parameters('deploymentLabel')]",
"type" : "active",
"dependsOn" : [
"[resourceId('Microsoft.ClassicCompute/domainNames', parameters('serviceDomainName'))]",
],
"properties" : {}
}
]
}
]
有没有办法在不知道部署标签的情况下强制进行交换?
文档讨论使用:https://management.azure.com/subscriptions/ / resourceGroups / /providers/Microsoft.ClassicCompute/domainNames/ / swap
但是我无法让它在模板中工作,因为所有的动作总是 type/name
,而这里我只有类型 .
1 回答
如果您只有两个部署插槽并且遵守标准命名约定,那么这应该是可以实现的,因为您只需在使用Production插槽切换时提供源插槽名称 .
如果您有两个以上的部署插槽和/或如果您没有遵守命名约定,那么您将无法生成一个硬编码的ARM模板来进行交换 . 当然需要注意的是,如果您确实知道您的插槽被调用了什么,您可以简单地对其进行参数化,为您提供一个通用插槽交换模板 .