Terraform变量指向当前文件名



Terraform配置文件中是否有指向当前文件名的特殊变量

我想把它用于各种资源中的描述字段,这样在系统中看到这些资源的人就会知道它们的主定义在哪里。

例如

myinfra.tf

resource "aws_iam_policy" "my_policy" {
name        = "something-important"
description = "Managed by Terraform at ${HERE_I_WOULD_LIKE_TO_USE_THE_VARIABLE}"
policy = <<EOF
[...]
EOF
}

我希望描述变成:

description = "Managed by Terraform at myinfra.tf"

我尝试了CCD_ 2;表达式所在模块的文件系统路径";,所以务实地说——除了我想要的文件名之外的所有东西。

以下是我可以分享的内容。使用数据外部资源调用外部脚本,该脚本将获取目录/文件名,然后将其作为字符串或资源所需的任何其他类型返回。显然,这并不完全是您想要的,因为您将间接获得目录/文件名,但希望它对其他人甚至您自己的用例有所帮助。

我们只将其用于azurerm和当前提供程序版本尚不支持的非常复杂的集成。我还没有专门为AWS测试过它,但由于它是Terraform的核心资源提供商,我猜它可能全面有效。

data "external" "cwd" {
program = ["./script.sh"]
query = {
cwd = "${path.cwd}"
}
}
resource "aws_iam_policy" "my_policy" {
name        = "something-important"
description = "Managed by Terraform at ${data.external.dir_script.result.filename}"
policy = <<EOF
[...]
EOF

我的脚本是这样的:

#!/bin/sh
#echo '{"cwd":"for_testing"}' | ./dir_name.sh  | xargs
PIPED=`cat`
errPrint "INFO: Got PIPED data:n$PIPED"
DIR=`jq -r .cwd <<< $PIPED`
cd $DIR
filename=`ls | grep .tf$ | xargs`
errPrint "INFO: Returning this as STDOUT:${filename}"
echo "{"name":"$filename"}"

您需要知道脚本中的数据需要返回一个有效的JSON对象。

然后程序必须在stdout上生成一个有效的JSON对象,该对象将用于填充导出到Terraform配置的其余部分的结果属性。此JSON对象必须再次将其所有值作为字符串。成功完成后,它必须以零状态退出。

不幸的是,与前面提到的其他文件一样,没有其他方法可以获得正在"应用"的当前文件名。

我认为您可能会从使用Bridge Crew中的yor之类的东西中受益。

来自项目自述:

Yor是一个开源工具,有助于在基础设施中添加信息丰富且一致的标签,如Terraform、CloudFormation和Serverless等代码框架。

Yor是作为一个GitHub Action运行的,它会自动为您的IaC添加一致的标记逻辑。Yor还可以作为预提交挂钩和独立的CLI运行。

所以基本上,它会用以下内容更新您的资源标签:

tags   = {
env                  = var.env
yor_trace            = "912066a1-31a3-4a08-911b-0b06d9eac64e"
git_repo             = "example"
git_org              = "bridgecrewio"
git_file             = "applyTag.md"
git_commit           = "COMMITHASH"
git_modifiers        = "bana/gandalf"
git_last_modified_at = "2021-01-08 00:00:00"
git_last_modified_by = "bana@bridgecrew.io"
}

也许这足以提供你想要做的事情?

就我的证词而言,我没有使用yor,因为我的标记使用了不同的方法。而不是具有";生的";标签,我们使用一个标签模块为我们构建标签,然后合并到本地标签中。

分享这些信息仅供参考,以防有帮助。

最新更新