【发布时间】:2021-11-15 09:36:24
【问题描述】:
这里是脚本。
- 第一次“应用”时,行为符合预期。
- 在第二次“应用”时,我得到“对象已在 Terraform 之外更改”,即使没有手动更改资源。
- 另外,在第二次“应用”时,子网会被删除。
---模块---
data "azurerm_resource_group" "rg" {
name = var.resource_group_name
}
resource "azurerm_virtual_network" "vnet" {
name = var.vnet_name
resource_group_name = data.azurerm_resource_group.rg.name
location = data.azurerm_resource_group.rg.location
address_space = var.vnet_address_space
dns_servers = var.dns_servers
subnet = []
}
resource "azurerm_subnet" "subnet" {
name = var.subnet_name
resource_group_name = var.resource_group_name
virtual_network_name = var.vnet_name
address_prefixes = var.subnet_address_space
enforce_private_link_endpoint_network_policies = var.enforce_private_link_endpoint_network_policies
}
module "vnet_gateway_dev" {
source = "./../../az_modules/vnet"
vnet_name = var.vnet_name
resource_group_name = data.azurerm_resource_group.rg.name
vnet_address_space = var.vnet_address_space
dns_servers = var.dns_servers
depends_on = [data.azurerm_resource_group.rg]
}
module "subnet" {
source = "./../../az_modules/subnet"
for_each = {for subnet in var.subnet_config: subnet.subnet_name => subnet}
resource_group_name = data.azurerm_resource_group.rg.name
vnet_name = each.value.vnet_name
subnet_name = each.value.subnet_name
subnet_address_space = each.value.subnet_adress_space
enforce_private_link_endpoint_network_policies = each.value.enforce_private_link_endpoint_network_policies
depends_on = [module.vnet_gateway_dev]
}
---输入文件---
resource_group_name="RG-01"
vnet_name = "VNET-DEV-01"
vnet_address_space = ["10.104.0.0/22"]
nsg_location="germanywestcentral"
dns_servers = []
subnet_config = [
{
vnet_name = "VNET-DEV-01"
subnet_name = "snet-01"
subnet_adress_space = ["10.104.0.0/28"]
enforce_private_link_endpoint_network_policies = null
nsg_rules = []
}
---这是地形计划---
Note: Objects have changed outside of Terraform
Terraform detected the following changes made outside of Terraform since the
# module.subnet["snet-01"].azurerm_subnet.subnet has been changed
~ resource "azurerm_subnet" "subnet" {
id = "/subscriptions/1111111111111111/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01/subnets/snet-01"
name = "snet-01"
+ service_endpoint_policy_ids = []
+ service_endpoints = []
# (6 unchanged attributes hidden)
}
# module.vnet_gateway_dev.azurerm_virtual_network.vnet has been changed
~ resource "azurerm_virtual_network" "vnet" {
id = "/subscriptions/1111111111111111/resourceGroups/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01"
name = "VNET-DEV-01"
~ subnet = [
+ {
+ address_prefix = "10.104.0.0/28"
+ id = "/subscriptions/1111111111111111/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01/subnets/snet-01"
+ name = "snet-01"
+ security_group = ""
}
}
------------
Terraform will perform the following actions:
# module.vnet_gateway_dev.azurerm_virtual_network.vnet will be updated in-place
~ resource "azurerm_virtual_network" "vnet" {
id = "/subscriptions/1111111111111111/resourceGroups/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01"
name = "VNET-DEV-01"
~ subnet = [
- {
- address_prefix = "10.104.0.0/28"
- id = "/subscriptions/1111111111111111/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01/subnets/snet-01"
- name = "snet-01"
- security_group = ""
},
]
}
【问题讨论】:
-
你能显示计划输出吗?究竟是什么原因导致更换?
-
@Marcin 我已经添加了计划。我不确定是什么导致删除。控制台中没有手动更改。
标签: azure terraform terraform-provider-azure