繁体   English   中英

仅通过Terraform添加ARM Azure VM

[英]Add ARM Azure VM only via Terraform

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

如果您已经拥有VNet,子网等,并且只想添加新的(例如,网络接口),该怎么办? 每次我尝试执行此操作并仅引用我认为是正确的ID时,计划阶段都可以运行,但是申请失败,并且在PUT调用上出现“ autorest:DoErrorUnlessStatusCode 400”错误。

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

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

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

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

“ $ {azurerm_subnet.xxx.id}”的值基于资源组/ vnet /子网。 因此,如果您知道它是如何构建的,则还可以资源化不是在Terraform中创建的资源。

您可以使用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}"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM