azure - Terraform 在后续 'apply' 中删除 Azure 资源,而无需更改任何配置

标签 azure terraform azure-virtual-network terraform-provider-azure infrastructure-as-code

我试图测试处理现有资源的外部更改的场景,然后在下一次应用中将我的 HCL 配置同步到当前状态。我可以对修改后的资源使用“污点”来实现这一点,但 TF 删除了在第一次“应用”期间部署的其他资源。以下是具有 3 个子网(prod、dmz 和 app)和 3 个关联 NSG 的 VNet 的模块代码。我测试了修改其中一个 NSG,但 TF 删除了所有子网 -

VNET-

resource "azurerm_virtual_network" "BP-VNet" {

name = var.Vnetname
location = var.location
resource_group_name = var.rgname
address_space = var.vnetaddress
subnet {
    name = "GatewaySubnet"
    address_prefix = "10.0.10.0/27"
}

}

子网 -

resource "azurerm_subnet" "subnets" {
count = var.subnetcount
name = "snet-prod-${lookup(var.snettype, count.index, "default")}-001"
address_prefixes = ["10.0.${count.index+1}.0/24"]
resource_group_name = var.rgname
virtual_network_name = azurerm_virtual_network.BP-VNet.name

}

核供应国集团-

    resource "azurerm_network_security_group" "nsgs" {
count = var.subnetcount
name = "nsg-prod-${lookup(var.snettype, count.index, "default")}"
resource_group_name = var.rgname
location = var.location
--------
}

堡垒子网-

    resource "azurerm_subnet" "bastionsubnet" {
  name = "AzureBastionSubnet"
  virtual_network_name = azurerm_virtual_network.BP-VNet.name
  resource_group_name = var.rgname
  address_prefixes = [ "10.0.5.0/27" ]
}

第二次应用的最终结果是 -

enter image description here

只有网关子网。它不应该删除其余 4 个子网。为什么会发生这种情况?

最佳答案

该解决方案可能会让您感到困惑。您可以将 GatewaySubnetazurerm_virtual_network block 分离到 azurerm_subnet block 中。代码如下所示:

resource "azurerm_subnet" "gateway" {
  name = "GatewaySubnet"
  resource_group_name = var.rgname
  virtual_network_name = azurerm_virtual_network.BP-VNet.name
  address_prefixes = ["10.0.10.0/27"]
}

我不知 Prop 体原因,但它解决了您的问题。

关于azure - Terraform 在后续 'apply' 中删除 Azure 资源,而无需更改任何配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67430248/

相关文章:

asp.net-mvc - 使用 MVC 应用程序和 SendGrid 的 Azure SQL 存储过程

asp.net-mvc - 找不到 securityToken 的有效 key 映射的永久解决方案

amazon-web-services - 如何启动一个新的 Terraform 项目并将 s3 设置为后端

azure - VNET 对等性能?

Azure webjobs不读取网站应用程序设置

Azure WorkerRole 在本地 dev-fabric 上运行,但不在 azure 上运行

azure - Terraform:如何迭代 map 输入的键值对并使用键作为索引

terraform-ecs。已注册的容器实例显示 0

azure - 从 Azure VNet 内部运行命令的最佳方式?

azure - 我的 Azure Web 应用程序可以访问虚拟网络的内部 DNS 吗?