首页 > 解决方案 > Azure Terraform 网络安全组被删除

问题描述

我有一个试图创建天蓝色资源的天蓝色 Terraform 代码,包括 Vnet、子网、NSG。我的目标 Azure 配置已经创建了 VNET、子网和 NSG。但是在进行了一些更改之后,terraform build 失败,因为它试图删除“网络安全组”,我想知道它尝试删除“:网络安全组”的原因。请建议它尝试删除网络安全组的根本原因是什么?

错误:删除网络安全组“xxxxxxx685558856875”(资源组“common-8856875”)时出错:network.SecurityGroupsClient#Delete:发送请求失败:StatusCode=400 -- 原始错误:Code="InUseNetworkSecurityGroupCannotBeDeleted" Message="网络安全组。

下面是我的 NSG 代码。

resource "azurerm_virtual_network" "virtual_network" {
  name                = "has-virtual-network-${var.location_namespace}"
  resource_group_name = var.common_rg_name
  address_space       = ["xx.x.x.x/x1"]
  location            = var.location
}

resource "azurerm_subnet" "subnet" {
  name                      = var.location_namespace
  resource_group_name       = var.common_rg_name
  virtual_network_name      = azurerm_virtual_network.virtual_network.name
  address_prefix            = "xx.x.x.x/x2"
  network_security_group_id = azurerm_network_security_group.network_security_group.id
  service_endpoints = [
    "Microsoft.KeyVault",
    "Microsoft.AzureCosmosDB",
    "Microsoft.Sql",
    "Microsoft.Storage"
  ]
}

resource "azurerm_network_security_group" "network_security_group" {
  name                = var.location_namespace
  location            = var.location
  resource_group_name = var.common_rg_name
}

resource "azurerm_subnet_network_security_group_association" "subnet_network_security_group_association" {
  subnet_id                 = azurerm_subnet.subnet.id
  network_security_group_id = azurerm_network_security_group.network_security_group.id
}

标签: azure-functionsterraformterraform-provider-azure

解决方案


能够解决问题。根本原因是由于某种原因,两个资源具有不同的地址但相同的 id=。刚刚在这两个条目上运行了 terraform state rm 。terraform state rm module.central_network.azurerm_network_security_group.network_security_group_appgwsubnet terraform state rm module.east_network.azurerm_network_security_group.network_security_group_appgwsubnet。这解决了这个问题。对此感到惊讶的是,天蓝色的 terraform 提供者以某种方式允许这种情况发生。


推荐阅读