0

是否可以仅使用 Terraform 添加新 VM?到目前为止,我使用 Terraform 的所有示例/示例以及所有内容都让我同时添加了 VNet、子网、网络接口、VM、存储等,在创建其他资源时引用脚本中创建的资源资源。例如,Terraform 网络接口,然后在创建 VM 时引用它。

如果您已经拥有 VNet、子网等,并且只想添加一个新的,例如网络接口,该怎么办。每次我尝试执行此操作并仅引用我认为正确的 id 时,计划阶段都有效,但随后应用失败,并在 PUT 调用上出现“autorest:DoErrorUnlessStatusCode 400”错误。

除非资源最初是使用 Terraform 创建的,否则是否不可能做到这一点?

4

2 回答 2

0

是的你可以。您可以从带有输出的已创建子网中获取 id。喜欢:

output "subnetid" {
       value = "${azurerm_subnet.xxx.id}"
}

在您的下一个模板中,您可以在 subnet_id 字段中使用此 ID。

“${azurerm_subnet.xxx.id}”的值基于资源组/vnet/subnet。因此,如果您知道它是如何构建的,您也可以喜欢不是在 terraform 中创建的资源。

于 2016-07-14T21:44:02.467 回答
0

您可以使用 data 指令获取现有资源,如下所示。然后,您可以插入这些以创建您的 VM。

data "azurerm_resource_group" "existing_deploy_rg" {
  name     = "RG"
}

data "azurerm_virtual_network" "existing_vnet" {
  name                = "existing-vnet"
  resource_group_name = "${data.azurerm_resource_group.existing_deploy_rg.name}"
}

data "azurerm_subnet" "existing_subnet" {
  name                 = "existing-subnet"
  resource_group_name  = "${data.azurerm_resource_group.existing_deploy_rg.name}"
  virtual_network_name = "${data.azurerm_virtual_network.existing_vnet.name}"
}
于 2018-12-12T20:20:42.597 回答