terraform - 使用模块时不显示输出

标签 terraform terraform0.12+

我的模块目录下有一个 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/

相关文章:

kubernetes - 台风Kubernetes错误:module.tempest.null_resource.bootstrap:仍在创建…[已逝去22m0s]

amazon-web-services - Terraform、 "ignore_changes"和子 block

azure - 在 Terraform 中通过 WinRM 连接到远程主机失败

amazon-web-services - 地形错误 : Error locking state: Error acquiring the state lock: 2 errors occurred:

terraform - 通过 Terraform 执行时 Azcopy 抛出错误

azure - Terraform:错误:解析应用服务资源 ID 时出错

terraform:根据键过滤 map 列表

amazon-web-services - 生成非 Terraform 创建的资源列表的最佳方法

amazon-web-services - 在 Terraform 中创建 S3 存储桶通知时出错

terraform - count=0 的 ACM 证书且 aws_acm_certificate_validation 由于 for_each 而失败