Kev*_*xis 1 terraform terraform-provider-aws
我正在尝试从远程状态调用数据以引用网络 acl 的 vpc_id。当我运行计划/应用时,我收到错误“此对象没有参数、嵌套块或名为“vpc_id”的导出属性。
我试过使用“data.terraform_remote_state.*.vpc_id”以及“${}”语法。我尝试在子模块和父模块的 variables.tf 中定义 data.remote 信息。
我最终需要能够为不同的 VPC/子网动态调用这个模块。
相关的 VPC 已经存在,并且所有模块都已初始化。
s3 存储桶阶段/网络/vpc/terraform.tfstate:
"outputs": {
"vpc_id": {
"value": "vpc-1234567890",
"type": "string"
}
},
enter code here
Run Code Online (Sandbox Code Playgroud)
模块/网络/acl/main.tf:
data "terraform_remote_state" "stage-network" {
backend = "s3"
config = {
bucket = "bucket"
key = "stage/network/vpc/terraform.tfstate"
}
}
resource "aws_network_acl" "main" {
vpc_id = data.terraform_remote_state.stage-network.vpc_id
# acl variables here
Run Code Online (Sandbox Code Playgroud)
阶段/网络/acl/main.tf:
data "terraform_remote_state" "stage-network" {
backend = "s3"
config = {
bucket = "bucket"
key = "stage/network/vpc/terraform.tfstate"
}
}
module "create_acl" {
source = "../../../modules/network/acl/"
vpc_id = var.vpc_id
# vpc_id = data.terraform_remote_state.stage-network.vpc_id
# vpc_id = "${data.terraform_remote_state.stage-network.vpc_id}"
# vpc_id = var.data.terraform_remote_state.stage-network.vpc_id
Run Code Online (Sandbox Code Playgroud)
我希望 acl 父模块能够关联到 VPC,然后子模块能够配置变量。
这是 Terraform 0.12.X 版本引入的重大更改之一。
所述terraform_remote_state数据源略有改变为v0.12释放以使所有远程状态输出可以作为一个单一的映射值,而不是作为顶层如在以前的版本属性。
在以前的版本中,对远程状态数据源导出的vpc_id输出的引用可能如下所示:
data.terraform_remote_state.vpc.vpc_id
Run Code Online (Sandbox Code Playgroud)
现在必须通过新的输出属性访问此值:
data.terraform_remote_state.vpc.outputs.vpc_id
Run Code Online (Sandbox Code Playgroud)
来源:https : //www.terraform.io/upgrade-guides/0-12.html#remote-state-references
| 归档时间: |
|
| 查看次数: |
2546 次 |
| 最近记录: |