gpt4 book ai didi

terraform - 使用 Terraform 刚刚创建的资源获取 Terraform 资源已经存在错误

转载 作者:行者123 更新时间:2023-12-03 20:49:01 28 4
gpt4 key购买 nike

我正在使用 Terraform 在 Azure 中设置虚拟网络。
我有几个 VNet,每个 VNet 都有自己的网络安全组 100% 在 Terraform 中管理,在运行 Terraform 之前不存在除资源组之外的资源。
当我跑 Terraform apply第一次正确创建所有资源。但是,如果我再次尝试运行 apply 以更新其他资源,则会收到错误消息,指出 NSG 资源已存在。

Error: A resource with the ID
"/subscriptions/0000000000000000/resourceGroups/SynthArtInfra/providers/Microsoft.Network/networkSecurityGroups/SynthArtInfra_ServerPoolNSG"
already exists - to be managed via Terraform this resource needs to be
imported into the State. Please see the resource documentation for
"azurerm_network_security_group" for more information.
为什么 Terraform 提示现有资源,而它应该已经在它的控制之下?
编辑:
这是与 NSG 相关的代码,其他一切都与 VPN 网关有关:
# Configure the Azure provider
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">= 2.26"
}
}
}

provider "azurerm" {
features {}
}

data "azurerm_resource_group" "SynthArtInfra" {
name = "SynthArtInfra"
location = "Somewhere" # not real
most_recent = true
}


resource "azurerm_virtual_network" "SynthArtInfra_ComputePool" {
name = "SynthArtInfra_ComputePool"
location = azurerm_resource_group.SynthArtInfra.location
resource_group_name = azurerm_resource_group.SynthArtInfra.name
address_space = ["10.6.0.0/16"]
}

resource "azurerm_subnet" "ComputePool_default" {
name = "ComputePool_default"
resource_group_name = azurerm_resource_group.SynthArtInfra.name
virtual_network_name = azurerm_virtual_network.SynthArtInfra_ComputePool.name
address_prefixes = ["10.6.0.0/24"]
}


resource "azurerm_network_security_group" "SynthArtInfra_ComputePoolNSG" {
name = "SynthArtInfra_ComputePoolNSG"
location = azurerm_resource_group.SynthArtInfra.location
resource_group_name = azurerm_resource_group.SynthArtInfra.name

security_rule {
name = "CustomSSH"
priority = 119
direction = "Inbound"
access = "Allow"
protocol = "*"
source_port_range = "*"
destination_port_range = "0000" # not the real port number
source_address_prefix = "*"
destination_address_prefix = "*"
}

}
另一个奇怪的事情是我们的订阅有一个安全策略,可以自动将 NSG 添加到没有 NSG 的资源中。但奇怪的是,在应用我的 terraform 脚本后,NSG 已创建但实际上并未与子网关联,并且安全策略已创建新的 NSG。这需要解决,但不认为会导致此错误。

最佳答案

我认为这是我第一次使用 Terraform,所以我在应用和销毁操作中途遇到了很多错误。
我最终手动删除了 Azure 中的所有资源并删除了 Terraform 的本地缓存,然后一切开始工作。

关于terraform - 使用 Terraform 刚刚创建的资源获取 Terraform 资源已经存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63929670/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com