azure - 在Azure资源组中创建子网但出现错误(无法删除它)

标签 azure terraform terraform-provider-azure

我有一个名为 vNetVPN-Dev 的虚拟网络,在该虚拟网络中我还有一些其他子网

现在我想在同一虚拟网络中创建另一个子网vNetVPN-Dev

虚拟网络

resource "azurerm_virtual_network" "virtual_network" {
  name                = "vNetVPN-Dev"
  location            = var.resource_group_location_north_europe
  resource_group_name = var.resource_group_name
  address_space       = ["10.1.16.0/23", "10.2.0.0/16", "172.16.100.0/24"]

  subnet {
    name           = "snet-vgp-dev"
    address_prefix = "10.2.1.0/24"
  }

  tags = {
    environment = var.tag_dev
  }
}

这是我想要配置的子网

resource "azurerm_subnet" "subnet_internal" {
  name                 = "snet-internal-vm"
  resource_group_name  = var.resource_group_name
  virtual_network_name = azurerm_virtual_network.virtual_network.name
  address_prefixes     = ["10.2.10.0/24"]
}

当我运行terraform apply命令时,它错误地指出GatewaySubnet正在使用中。

creating/updating Virtual Network: (Name "vNetVPN-Dev" / Resource Group "rg-03-data-dev"): network.VirtualNetworksClient#CreateOrUpdate: 
Failure sending request: StatusCode=400 -- 
Original Error: Code="InUseSubnetCannotBeDeleted" 
Message="Subnet GatewaySubnet is in use by /subscriptions/XXXXXXXXXXXXXXX/resourceGroups/rg-03-data-dev/providers/Microsoft.Network/virtualNetworkGateways/vgw-vgp-dev/ipConfigurations/vpn_public_ip_address_vgtw and cannot be deleted. 
In order to delete the subnet, delete all the resources within the subnet. See aka.ms/deletesubnet."

我无法阻止 GatewaySubnet

GatewaySubnet 用于 VPN。 我是否需要删除 GatewaySubnet 才能配置其他资源?

最佳答案

无法使用 azurerm_virtual_network 和 azurerm_subnet 资源的内联子网来声明同一 vnet 的子网。

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/virtual_network

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/subnet

为了防止 terraform 尝试删除已部署的网关子网,您应该仅使用内联声明

resource "azurerm_virtual_network" "virtual_network" {
  name                = "vNetVPN-Dev"
  location            = var.resource_group_location_north_europe
  resource_group_name = var.resource_group_name
  address_space       = ["10.1.16.0/23", "10.2.0.0/16", "172.16.100.0/24"]

  subnet {
    name           = "snet-vgp-dev"
    address_prefix = "10.2.1.0/24"
  }

  subnet {
    name           = "snet-internal-vm"
    address_prefix = "10.2.10.0/24"
  }

  tags = {
    environment = var.tag_dev
  }
}

关于azure - 在Azure资源组中创建子网但出现错误(无法删除它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75080426/

相关文章:

amazon-web-services - Terraform IF 条件

mysql - 此订阅被限制在此区域配置 MySQL 服务器请选择具有服务的其他区域,订阅限制问题类型

azure - 为什么要对上传到 Azure 媒体服务的视频进行编码?

Terraform 使用 for_each 引用另一个模块的输出

azure - 创建 Azure 任务自动化时出现未授权错误

azure - 如何使用 Terraform AzureRm 在同一管理规则中包含多个地址前缀

azure-virtual-machine - 表达式已成功解析,但在其后发现了多余的字符

Azure Policy DeployIfNotExists 无法更改值

c# - 如何将调试器附加到 Windows Azure VM 上运行的应用程序?

Azure WebJob 函数有错误