是否可以仅使用Terraform添加新VM?到目前为止,所有示例/示例以及我使用Terraform的所有内容都让我同时添加VNet,子网,网络接口,VM,存储等等,在创建其他时引用脚本中包含的资源资源。例如,Terraform网络接口,然后在创建VM时引用它。
如果您已经拥有VNet,Subnet等,并且只想添加一个新的网络接口,那该怎么办?每次我尝试这样做并且只是引用我认为是正确的id时,计划阶段工作但是然后应用失败,并且在PUT调用时出现“autorest:DoErrorUnlessStatusCode 400”错误。
除非资源最初是使用Terraform创建的,否则不可能这样做?
答案 0 :(得分:0)
是的,你可以。您可以从具有输出的已创建子网获取ID。像:
output "subnetid" {
value = "${azurerm_subnet.xxx.id}"
}
在下一个模板中,您可以在subnet_id字段中使用此ID。
“$ {azurerm_subnet.xxx.id}”的值基于resourcegroup / vnet / subnet。因此,如果你知道它是如何构建的,你也可以喜欢不是以terraform形式创建的资源。
答案 1 :(得分: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}"
}