我有两个模块,一个是vpc,一个是创建安全组。
我无法得到terraform_remote_state:
vpc_id = data.terraform_remote_state.network_configuration.outputs.vpc_id
在我的IDE中pycharm输出不存在,即like输出不是一个有效的选项
在根目录中,我得到如下输出:
module "vpc" {
source = "./modules/vpc"
region = var.region
vpc_cidr = var.vpc_cidr
public_subnet_1_cidr = var.public_subnet_1_cidr
public_subnet_2_cidr = var.public_subnet_2_cidr
public_subnet_3_cidr = var.public_subnet_3_cidr
private_subnet_1_cidr = var.private_subnet_1_cidr
private_subnet_2_cidr = var.private_subnet_2_cidr
private_subnet_3_cidr = var.private_subnet_3_cidr
}
output "vpc_id" {
value = module.vpc.vpc_id
}
在VPC模块中我有一个输出。
output "vpc_id" {
value = aws_vpc.production-vpc.id
}
在根目录中有输出。
output "vpc_id" {
value = module.vpc.vpc_id
}
下面是我的安全组模块:
data "terraform_remote_state" "network_configuration" {
backend = "s3"
config = {
bucket = var.remote_state_bucket
key = var.remote_state_key
region = var.region
profile = "terraform"
}
}
resource "aws_security_group" "ec2_private_security_group" {
name = "EC2-Private-SG"
description = "Only allow public SG resoruces to access instances"
vpc_id = data.terraform_remote_state.network_configuration.outputs.vpc_id
...
}
我做错了什么得到vpc_id ?我得到下面的错误
Error: Unsupported attribute
on modules/sg/sg.tf line 19, in resource "aws_security_group" "ec2_private_security_group":
19: vpc_id = data.terraform_remote_state.network_configuration.outputs.vpc_id
|----------------
| data.terraform_remote_state.network_configuration.outputs is object with no attributes
This object does not have an attribute named "vpc_id".
根据评论
使用terraform_remote_state
在模块之间传递变量不是一个好的做法。相反,您应该将变量作为常规输入变量传递给模块:
vpc_id = module.vpc.vpc_id