我是Terraform的新手,所以我会尽我所能解释。Terraform 不会从状态文件中读取变量/输出,也不会在另一个文件中使用该值。
我尝试在互联网上搜索我能找到的所有内容,看看是否有人遇到过这个问题以及他们是如何解决的。
###vnet.tf
#Remote State pulling data from bastion resource group state
data "terraform_remote_state" "network" {
backend = "azurerm"
config = {
storage_account_name = "terraformstatetracking"
container_name = "bastionresourcegroups"
key = "terraform.terraformstate"
}
}
#creating virtual network and putting that network in resource group created by bastion.tf file
module "quannetwork" {
source = "Azure/network/azurerm"
resource_group_name = "data.terraform_remote_state.network.outputs.quan_netwk"
location = "centralus"
vnet_name = "quan"
address_space = "10.0.0.0/16"
subnet_prefixes = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
subnet_names = ["subnet1", "subnet2", "subnet3"]
tags = {
environment = "quan"
costcenter = "it"
}
}
terraform {
backend "azurerm" {
storage_account_name = "terraformstatetracking"
container_name = "quannetwork"
key = "terraform.terraformstate"
}
}
###resourcegroups.tf
# Create a resource group
#Bastion
resource "azurerm_resource_group" "cm" {
name = "${var.prefix}cm.RG"
location = "${var.location}"
tags = "${var.tags}"
}
#Bastion1
resource "azurerm_resource_group" "network" {
name = "${var.prefix}network.RG"
location = "${var.location}"
tags = "${var.tags}"
}
#bastion2
resource "azurerm_resource_group" "storage" {
name = "${var.prefix}storage.RG"
location = "${var.location}"
tags = "${var.tags}"
}
terraform {
backend "azurerm" {
storage_account_name = "terraformstatetracking"
container_name = "bastionresourcegroups"
key = "terraform.terraformstate"
}
}
###outputs.tf
output "quan_netwk" {
description = "Quan Network Resource Group"
value = "${azurerm_resource_group.network.id}"
}
运行vnet.tf
代码时,它应读取存储在 Azure 后端存储帐户状态文件文件中的outputs.tf
的输出,并将该值用于quannetwork
模块中的resource_group_name
。而是创建一个名为data.terraform_remote_state.network.outputs.quan_netwk
的资源组。任何帮助将不胜感激。
首先,需要在模块quannetwork
中输入resource_group_name
的字符串,而不是资源组 Id。
其次,如果你想在远程状态下引用某些东西,不要只把它放在双引号中,下面的正确格式:
resource_group_name = "${data.terraform_remote_state.network.outputs.quan_netwk}"