我的模块目录下有一个 outputs.tf
文件。我有一个 Main.tf
文件。当我创建资源和 Terraform 应用时,不显示输出。但是,如果我不使用模块并严格从 Main.tf
文件创建资源,则输出显示正常。使用模块和单独的 outputs.tf
文件时,我需要做哪些不同的事情才能显示输出?
Terraform v0.11.14
+ provider.aws v2.19.0
但是,如果我不使用模块并严格从 Main.tf
文件创建资源,则输出显示正常。
main.tf
module "identity-provider" {
source = "./modules/identity-provider"
}
module "saml-role1" {
source = "./modules/saml-roles/"
}
==============
模块文件
resource "aws_iam_role" "role1" {
name = "saml-role1"
description = "Blah Blah"
path = "/"
assume_role_policy = "${data.aws_iam_policy_document.assume_role.json}"
permissions_boundary = ""
max_session_duration = 43200
resource "aws_iam_role_policy_attachment" "Read-Only" {
role = "${aws_iam_role.role1.name}"
policy_arn = "arn:aws:iam::aws:policy/ReadOnlyAccess"
}
==================
输出.tf
output "Role1-ARN" {
value = "${module.saml-role1.arn}"
}
最佳答案
Terraform 仅捕获并显示根模块的输出。如果您需要将输出从模块传递到根模块,则必须显式执行此操作(例如,您无权访问根模块创建的所有资源,只能访问指定为输出的值)。如果您在模块文件中包含如下输出:
resource "aws_iam_role" "role1" {
name = "saml-role1"
description = "Blah Blah"
path = "/"
assume_role_policy = "${data.aws_iam_policy_document.assume_role.json}"
permissions_boundary = ""
max_session_duration = 43200
resource "aws_iam_role_policy_attachment" "Read-Only" {
role = "${aws_iam_role.role1.name}"
policy_arn = "arn:aws:iam::aws:policy/ReadOnlyAccess"
}
output "saml-role1-arn" {
value = "aws_iam_role.role1.arn"
}
然后从根模块中您可以访问输出:
module "saml-role1" {
source = "./modules/saml-roles/"
}
output "saml-role1-arn" {
value = "${module.saml-role1.saml-role1-arn}"
}
关于terraform - 使用模块时不显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57129301/