【发布时间】:2020-04-21 17:18:38
【问题描述】:
我有一个尝试创建天蓝色资源的天蓝色 Terraform 代码,包括 Vnet、子网、NSG。我的目标 Azure 配置已经创建了 VNET、子网和 NSG。但是在进行了一些更改之后,terraform build 失败,因为它试图删除“网络安全组”,我想知道它尝试删除“:网络安全组”的原因。请建议它尝试删除网络安全组的根本原因是什么?
错误:删除网络安全组“xxxxxxx685558856875”(资源组“common-8856875”)时出错:network.SecurityGroupsClient#Delete:发送请求失败:StatusCode=400 -- 原始错误:Code="InUseNetworkSecurityGroupCannotBeDeleted" Message="Network安全组。
下面是我的 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
}
【问题讨论】:
-
改名,也许?
-
现有 NSG 的名称是什么?和你想通过 Terraform 创建的一样吗?
-
尝试删除安全组时的计划是什么样的?
-
能够解决问题。根本原因是由于某种原因,两个资源具有不同的地址但相同的 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 提供者以某种方式允许这种情况发生。
-
如果您解决了问题,请添加答案以显示解决方案。
标签: azure-functions terraform terraform-provider-azure