gpt4 book ai didi

azure - 在azure中使用terraform创建资源组: Cannot find resource group directly after creating it

转载 作者:行者123 更新时间:2023-12-03 18:37:35 26 4
gpt4 key购买 nike

我即将在 azure 中使用 terraform 创建一个小型虚拟机,但遇到了一个奇怪的问题。 Terraform 创建了我的资源组,但在创建属于该资源组的下一个对象(VNet)时立即失败:

resource "azurerm_resource_group" "simple_vm" {
name = "simple_vm"
location = "westeurope"
}

resource "azurerm_virtual_network" "main" {
name = "main"
address_space = ["10.0.0.0/16"]
location = "westeurope"
resource_group_name = "simple_vm"
}

调用terraform apply会导致:

* azurerm_virtual_network.main: 1 error(s) occurred:

* azurerm_virtual_network.main: Error Creating/Updating Virtual Network "main" (Resource Group "simple_vm"): network.VirtualNetworksClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status=404 Code="ResourceGroupNotFound" Message="Resource group 'simple_vm' could not be found."

查看Web界面,资源组已经创建。再次调用 terraform apply 可以正确找到它并在资源组内创建 VNet。

对我来说,这看起来像是 terraform 尝试在资源组中创建对象,而它尚未在 azure 中完全实例化。我观察到了公共(public) IP 的类似行为:我创建了一个具有公共(public) IP 的虚拟机,并包含一个 output ... 来打印虚拟机的公共(public) IP。第一次运行时,输出为空(但没有错误消息)。 terraform刷新后,输出将填充IP。

我做错了什么吗?这是 terraform 中的错误吗?

最佳答案

您需要创建像这样的隐式依赖项:

resource "azurerm_virtual_network" "main" {
name = "main"
address_space = ["10.0.0.0/16"]
location = "westeurope"
resource_group_name = "${azurerm_resource_group.simple_vm.name}"
}

通过这种方式,Terraform 知道需要先创建资源组,然后才能创建 vNet。

从 Terraform 的角度来看,您的原始代码只有 2 个独立的资源。

Terraform 的 documentation对此很有用。一般来说,除非绝对必要,否则您不想设置显式 (depends_on) 依赖项。

关于azure - 在azure中使用terraform创建资源组: Cannot find resource group directly after creating it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51933811/

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