Azure - 使用ARM模板交换生产和暂存插槽

时间:2018-02-28 08:32:33

标签: azure azure-resource-manager azure-cloud-services

我正在使用ARM模板部署云服务。一旦部署到临时插槽,我就会激活它,从而触发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/ {subscriptionId} / resourceGroups / {资源组} /providers/Microsoft.ClassicCompute/domainNames/ {则domainName} /交换

但我无法在模板中运行,因为所有操作始终都是type/name,而且我只有类型。

1 个答案:

答案 0 :(得分:-1)

如果您只有两个部署插槽并且遵守标准命名约定,那么这应该是可以实现的,因为您只需要在使用生产插槽切换时提供源插槽名称。

如果您有两个以上的部署位置和/或如果您没有遵守命名约定,那么您将无法生成一个硬编码的ARM模板来执行交换。当然需要注意的是,如果您确实知道您的插槽被调用了什么,您可以简单地对其进行参数化,为您提供一个通用插槽交换模板。