【问题标题】:How to ignore locked resources with 'Complete' mode deployment to Azure?如何通过“完整”模式部署到 Azure 来忽略锁定的资源?
【发布时间】:2019-05-22 14:37:30
【问题描述】:

我们的团队正在使用使用多个 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 来指示类似的东西?

显而易见的方法是将资源移动到单独的资源组,但不幸的是,这对我们来说是不可能的。我还找不到其他方法,但也许我错过了一些东西。感谢您提前提供任何答案。

【问题讨论】:

标签: azure azure-resource-manager arm-template azure-cli


【解决方案1】:

除了将资源移动到单独的资源组(您说无论如何都排除了这种情况)之外,解决此问题的另一种方法是将 Conditions 与您的资源一起使用。

请注意,在complete 模式下,资源管理器会删除资源组中存在但未在模板中指定的资源。在模板中指定但由于 condition 计算结果为 false 而未部署的资源不会被删除。

有关语法和示例的更多详细信息,请参阅以下资源:

希望这会有所帮助!

【讨论】:

  • 这不再准确。如果您的模板包含由于条件评估为 false 而未部署的资源,则结果取决于您用于部署模板的 REST API 版本。如果您使用早于 2019-05-10 的版本,则不会删除该资源。在 2019-05-10 或更高版本中,资源被删除。最新版本的 Azure PowerShell 和 Azure CLI 会删除资源。 docs.microsoft.com/en-us/azure/azure-resource-manager/templates/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 2020-04-26
  • 2020-06-21
  • 2023-03-25
  • 1970-01-01
相关资源
最近更新 更多