在这里,我使用数据块来检索Vnet的信息,如果它已经存在。如果Vnet不存在,则创建一个同名的新的。我已经正确地定义了一切。
data "azurerm_virtual_network" "existing_vnet" {
name = var.vnet_name
resource_group_name = data.azurerm_resource_group.existing_rg.name
}
locals {
vnet_exists = length(data.azurerm_virtual_network.existing_vnet) > 0
}
resource "azurerm_virtual_network" "my_vnet" {
count = local.vnet_exists ? 0 : 1
name = var.vnet_name
address_space = var.address_space
location = data.azurerm_resource_group.existing_rg.location
resource_group_name = data.azurerm_resource_group.existing_rg.name
}
但是在运行terraform apply
之后,它显示了一个错误:
Error: Error: Virtual Network: (Name "axis_VN" / Resource Group "training") was not found
│
│ with data.azurerm_virtual_network.existing_vnet,
│ on main.tf line 24, in data "azurerm_virtual_network" "existing_vnet":
│ 24: data "azurerm_virtual_network" "existing_vnet" {
有谁能帮我这个忙吗?
我期望VNet只在它不在资源组中退出时才创建
1条答案
按热度按时间z6psavjg1#
我试着用下面的代码来检查现有的资源
如果资源不存在,则会显示错误“resource not found”。
对于此外部数据源,可以使用:外部的|数据源|哈希公司/外部|Terraform Registry不检查预先存在的资源。
这里几乎可以使用任何编程语言。一个这样的例子,我试图创建VM,如果它不存在。
**PowerShell代码:**Checkexistence.ps1
最初只检查不存在:它必须返回true。
如果VM不存在,它将被创建。