我们的团队正在使用使用多个 ARM 模板的部署来设置我们的环境。第一个 ARM 模板设置为部署模式“完整”并删除除存储帐户之外的所有内容。我们使用 Azure CLI 进行部署:
az group deployment create \
--mode Incremental \
--resource-group $resourceGroupName \
--template-file $BUILD_SOURCESDIRECTORY'/Infrastructure/azuredeploy.json' \
--parameters $BUILD_SOURCESDIRECTORY'/Infrastructure/azuredeploy.parameters.'$environment'.json' \
--query $query \
--output json
但是,我们的一个资源组包含一些锁定的资源(由不同的团队管理)。在这种特殊情况下,“完整”部署模式的策略会失败,因为 Azure 无法删除锁定的资源。
当然可以理解,但也许有办法解决这个问题?例如,我们可以指示 ARM 模板忽略特定资源吗?或者使用 CLI 来指示类似的事情?
显而易见的方法是将资源移动到单独的资源组,但不幸的是,这对我们来说是不可能的。我还找不到其他方法,但也许我错过了一些东西。感谢您提前的答复。
最佳答案
除了将资源移动到单独的资源组(您说在您的情况下无论如何都排除了这种情况)之外,解决此问题的另一种方法是对您的资源使用条件。
请注意 complete 中的内容模式下,资源管理器删除资源组中存在但模板中未指定的资源。模板中指定但未部署的资源,因为 condition评估为 false,不会被删除。
有关语法和示例的更多详细信息,请参阅以下资源:
- Structure and syntax of Azure Resource Manager templates
- Conditionally deploy a resource in an Azure Resource Manager template
希望这有帮助!
关于azure - 如何通过 'Complete' 模式部署到 Azure 来忽略锁定的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56259340/