這里是腳本。
- 第一次 "應用 "時,行為與預期一致。
- 在第二次 "應用 "時,我得到了 "物件在Terraform之外發生了變化",盡管沒有對資源進行手動更改。
- 此外,在第二次 "應用 "時,子網被洗掉。
--模塊--
data "azurerm_resource_group"/span> "rg"/span> {
name = var. resource_group_name
}
資源 "azurerm_virtual_network"/span> "vnet"/span> {
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_serverssubnet = [] 。
}
resource "azurerm_subnet"/span> "subnet"/span> {
name = var.subnet_name.
resource_group_name = var.resource_group_namevirtual_network_name = var.vnet_nameaddress_prefixes = var.subnet_address_spaceenforce_private_link_endpoint_network_policies = var.force_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_serversdepends_on = [ data.azurerm_resource_group.rg ]
module "subnet" {
source = "./.../.../az_modules/subnet"/span>
for_each = {for subnet in var.subnet_config: subnet.subnet_name => subnet }
resource_group_name = data.azurerm_resource_group.rg.namevnet_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"/span>
vnet_name="VNET-DEV-01"。
vnet_address_space = ["10.104.0.0/22"/span>]
nsg_location="germanywestcentral"
dns_servers=[] 。
subnet_config = [
{
vnet_name = "VNET-DEV-01"/span>
subnet_name = "snet-01"/span>
subnet_adress_space = ["10.104.0.0/28"]
enforce_private_link_endpoint_network_policies = null
nsg_rules = []
}
---這里是terraform計劃---
注意:物件在Terraform之外發生了變化
Terraform檢測到自Terraform之外的以下變化
# module.subnet["snet-01"].azurerm_subnet.subnet已被更改。
~ 資源 "azurerm_subnet"/span> "subnet"/span> {
id = "/subscriptions/11111111/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01/subnets/snet-01"
name = "snet-01"/span>
service_endpoint_policy_ids = [] service_endpoint = []
service_endpoints = []
# (6未改變的屬性隱藏)
}
# module.vnet_gateway_dev.azurerm_virtual_network.vnet已被改變。
~ 資源 "azurerm_virtual_network"/span> "vnet"/span> {
id = "/subscriptions/1111111111/resourceGroups/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01"
名稱 = "VNET-DEV-01"/span>
~ subnet = [
{
address_prefix = "10.104.0.0/28"/span>
id = "/subscriptions/11111111/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01/subnets/snet-01"
name = "snet-01"/span>
security_group = ""
}
}
------------
Terraform將執行以下操作。
# module.vnet_gateway_dev.azurerm_virtual_network.vnet將被就地更新。
~ 資源 "azurerm_virtual_network"/span> "vnet"/span> {
id = "/subscriptions/1111111111/resourceGroups/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01"
名稱 = "VNET-DEV-01"/span>
~ 子網 = [
- {
- address_prefix = "10.104.0.0/28"/span>
- id = "/subscriptions/11111111/***/providers/Microsoft.Network/virtualNetworks/VNET-DEV-01/subnets/snet-01"。
- name = "snet-01"/span>
- security_group = ""/span>
},
]
}
uj5u.com熱心網友回復:
我認為這種情況的發生是因為你通過使用:
洗掉了這些子網。
subnet = [] 。
TF docs write:
此時,你不能使用帶有行內子網的虛擬網路和任何子網資源。這樣做將導致子網配置的沖突,并將覆寫子網的配置。
因此,您必須決定是在azurerm_virtual_network中使用subnet還是使用單獨的資源azurerm_subnet。你不能同時混合使用這兩種資源。
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/332568.html
標籤:
