如何用Terraform为已有ACR实现软删除(不使用null_resource)
替代null_resource启用ACR软删除策略的方法
不用依赖null_resource调用az cli,直接用Terraform的AzureRM Provider就能配置已存在ACR的软删除策略,具体步骤如下:
第一步:把已存在的ACR导入Terraform状态
先执行以下命令,将你的ACR实例纳入Terraform的管理范围:terraform import azurerm_container_registry.my_registry /subscriptions/<你的订阅ID>/resourceGroups/<资源组名称>/providers/Microsoft.ContainerRegistry/registries/MyRegistry第二步:编写Terraform配置代码
在你的配置文件里定义azurerm_container_registry资源,添加soft_delete_policy嵌套块来启用软删除并设置保留天数:resource "azurerm_container_registry" "my_registry" { name = "MyRegistry" resource_group_name = "<你的资源组名称>" location = "<ACR所在的区域>" sku = "Premium" # 划重点:ACR软删除仅支持Premium SKU,若当前不是需先升级 soft_delete_policy { enabled = true retention_days = 7 } # 注意:如果ACR原本有其他配置(比如管理员账户启用、异地复制等),需要把这些配置也写在这里,防止Terraform执行时覆盖原有设置 }第三步:应用配置
先运行terraform plan检查变更内容,确认无误后执行terraform apply,Terraform会自动为你的ACR配置好软删除策略,全程不需要本地执行az cli命令。
这种方式用Terraform声明式配置管理资源策略,比null_resource更可靠,也能更好地跟踪资源状态变化。
内容的提问来源于stack exchange,提问作者Dv6
相关产品推荐
相关产品推荐

