当天青策略在所有子网上都需要NSG时,如何处理Terraform销毁操作?

时间:2019-04-25 19:26:18

标签: terraform terraform-provider-azure

我们有一个关于订阅的政策,该政策强制所有子网都具有NSG。创建子网/ NSG时,Terraform可以很好地工作。但是,在执行Terraform销毁时会遇到策略错误,因为它首先尝试从子网中删除NSG。由于在所有子网上都要求使用NSG的策略,该功能被阻止。有没有办法在terraform中解决此问题,或者可能使子网/ nsg删除成为原子操作?

Terraform v0.11.13 + provider.azurerm v1.25.0

1 个答案:

答案 0 :(得分:1)

这是一个很难解决的问题,只有草率的解决方案。我通常是在讲用Terraform处理政策。本质上,您想动态地将排除范围注入资源:

选项

  1. 只需转到Azure门户并在销毁之前排除资源上的策略。如果禁用该策略,则需要将其放回原处。
  2. 在运行之前为管道中的策略分配构建动态terraform,这将为目标资源添加not_scope。由于策略分配已经部署,因此将需要导入它。
  3. 提出一种发出策略引擎信号的方式(无论您使用什么来自动化Azure策略)。将not_scope添加到您的管道中。
  4. 使用Terraform跳过,使用Azure CLI或REST界面更新范围。

对于选项2、3或4,需要暂停以使策略分配生效。我的经验是,它会有所不同,有时会失败,但是,如果您正在执行管道,则可以对其进行警报并重新运行。