gpt4 book ai didi

terraform - 是否可以在 terraform 远程状态文件中访问模块状态?

转载 作者:行者123 更新时间:2023-12-04 04:03:00 26 4
gpt4 key购买 nike

如果 terraform 脚本使用具有输出的模块,则可以使用 -module 访问这些模块输出。 terraform output 的选项命令:

$ terraform output --help
Usage: terraform output [options] [NAME]

Reads an output variable from a Terraform state file and prints
the value. If NAME is not specified, all outputs are printed.

Options:

-state=path Path to the state file to read. Defaults to
"terraform.tfstate".

-no-color If specified, output won't contain any color.

-module=name If specified, returns the outputs for a
specific module

-json If specified, machine readable output will be
printed in JSON format

如果我将该状态文件存储在 S3 或类似文件中,则可以使用 terraform_remote_state 引用主脚本的输出。数据提供者。
data "terraform_remote_state" "base_networking" {
backend = "s3"
config {
bucket = "${var.remote_state_bucket}"
region = "${var.remote_state_region}"
key = "${var.networking_remote_state_key}"
}
}

resource "aws_instance" "my_instance" {
subnets = "${data.terraform_remote_state.base_networking.vpc_id}"
}

是否也可以访问状态文件中存在的模块输出?我正在寻找类似 "${data.terraform_remote_state.base_networking.module.<module_name>.<output>}" 的内容或类似的。

最佳答案

是的,您可以从自己的模块访问远程状态输出。您只需要“传播”输出。
例如,假设你有这样的东西,你的 base_networking基础设施,其中包含一个用于创建您的 VPC 的模块,并且您希望可以通过远程状态访问该 VPC ID:

base_networking/
main.tf
outputs.tf
vpc/
main.tf
outputs.tf
base_networking/main.tf您使用 base_networking/vpc 创建 VPC模块:
module "vpc" {
source = "./vpc"
region = "${var.region}"
name = "${var.vpc_name}"
cidr = "${var.vpc_cidr}"
}
base_networking/vpc/outputs.tf在您的模块中,您有一个 id输出:
output "id" {
value = "${aws_vpc.vpc.id}"
}
base_networking/outputs.tf你还有一个 vpc_id传播的输出 module.vpc.id :
output "vpc_id" {
value = "${module.vpc.id}"
有了它,您现在可以访问 vpc_id使用类似的东西:
data "terraform_remote_state" "base_networking" {
backend = "s3"
config = {
bucket = "${var.remote_state_bucket}"
region = "${var.remote_state_region}"
key = "${var.networking_remote_state_key}"
}
}

[...]

vpc_id = "${data.terraform_remote_state.base_networking.vpc_id}"

关于terraform - 是否可以在 terraform 远程状态文件中访问模块状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39730436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com