【问题标题】:Ignore specific key from terraform outputs or locals忽略来自 terraform 输出或本地的特定键
【发布时间】:2022-10-23 06:57:26
【问题描述】:

我有以下代码:

locals {
  env-list    = [for k, v in local.all-env-vars : { "${k}" : v }]
  test-list = [for k, v in local.test-env-vars : { "${k}" : v }]

  ssm    = setsubtract(local.env-list, local.test-list)
  test   = setsubtract(local.test-list, local.env-list)
}

output "diffs" {
  value = {
    ssm_only : nonsensitive([for s in local.ssm : keys(s)[0]]),
    test_only : nonsensitive([for s in local.test : keys(s)[0]]),
  }
}

现在,我需要做的是 - 在ssm_only 中 - 有一个名为“EXAMPLE_KEY”的键,我不希望它包含在输出中 - 所以意思是忽略它。

我真的不知道该怎么做...我应该修改local.ssm 还是ssm_only 输出,以及如何修改?

【问题讨论】:

    标签: syntax terraform terraform-provider-aws


    【解决方案1】:

    假设local.ssm 中的每个键都是s,一种方法是在for 循环中应用条件来过滤ssm_only 输出的元素:

    if s != "EXAMPLE_KEY"

    # ...
    output "diffs" {
      value = {
        ssm_only : nonsensitive([for s in local.ssm : keys(s)[0] if s != "EXAMPLE_KEY"]),
      }
    }
    

    如果您不想在本地级别使用它,您可以将类似的逻辑应用于locals

    locals {
      env-list  = [for k, v in local.all-env-vars : { "${k}" : v } if k != "EXAMPLE_KEY"]
      test-list = [for k, v in local.test-env-vars : { "${k}" : v } if k != "EXAMPLE_KEY"]
      # ...
    }
    

    请注意,我没有测试此代码,但希望这会有所帮助!

    文档:https://www.terraform.io/language/expressions/for#filtering-elements

    【讨论】:

    • “输出”差异“的第一个建议给出了一些错误,但第二个建议工作正常!!谢谢!
    • 我还有一个问题.. 如果将来我需要添加更多键来忽略.. 我该怎么做?如果我还需要忽略 "EXAMPLE_KEY2" 怎么办? @cody.codes - ty
    • 肯定的事。您可以在此处使用布尔逻辑运算符,例如(if k != "EXAMPLE_KEY" || if k != "EXAMPLE_KEY2")terraform.io/language/configuration-0-11/…
    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    相关资源
    最近更新 更多