【问题标题】:In Terraform, get first matching file name in current path在 Terraform 中,获取当前路径中的第一个匹配文件名
【发布时间】:2022-01-12 05:18:09
【问题描述】:

是否可以在 terraform 中检索名称与当前目录或任何父目录中的某个正则表达式匹配的第一个文件?

例如,我希望它首先检查当前目录中的config.json。如果它存在,它就会停止。如果没有,它会检查../config.json,然后是../../config.json,等等。

.
├── directory1
│   ├── subdirectory1
│   │   └── main.tf
│   └── config.json
└── directory2
    └── config.json

在这个例子中,它应该返回directory1/config.json。然后我想使用jsondecode 来解析这个配置文件中的一些值并将它分配给一个变量。

我见过的最接近这个的功能是fileset,但我认为它不能用来解决这个问题。

【问题讨论】:

  • 我认为你的想法是对的。您可以将您的正则表达式与fileset 一起使用以返回所有匹配项的列表,然后返回列表中的第一个元素(假设它符合您想要的条件)。返回行为似乎是父目录与子目录,以及正常的字母数字排序。

标签: terraform terraform0.12+


【解决方案1】:

我最近确实做了类似的事情。

选择存在的链的第一个文件:

output "first_match" {
    value = try(
            tolist(fileset(path.module, "file1"))[0], 
            tolist(fileset(path.module, "folder/file2"))[0], 
            tolist(fileset(path.module, "folder/folder/file3"))[0], 
            "default if nothing matches")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多