使用模块时不显示输出

问题描述 投票:0回答:3

我的模块目录下有一个

outputs.tf
文件。我有一个
Main.tf
文件。当我创建资源和 Terraform 应用时,不显示输出。但是,如果我不使用模块并严格从
Main.tf
文件创建资源,则输出显示正常。使用模块和单独的
outputs.tf
文件时,我需要做哪些不同的事情才能显示输出?

    Terraform v0.11.14
+ provider.aws v2.19.0

但是,如果我不使用模块并严格从

Main.tf
文件创建资源,则输出显示正常。

主.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 terraform0.12+
3个回答
6
投票

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}"
}

0
投票

当您在模块中保留“count”变量时,则需要在outputs.tf文件中使用*。

示例:

output "Role1-ARN" {
  value = "${module.saml-role1.*.Role1-ARN}"
}

0
投票

您还需要另一个 output.tf 文件以及 main.tf 文件来捕获模块的输出。

以下是output.tf文件的内容。

output "Role1-ARN" {
  value = "${module.saml-role1.Role1-ARN}"
}
© www.soinside.com 2019 - 2024. All rights reserved.