Terragrunt-将TF和TG版本动态添加到AWS默认标签中



我有一个默认的标签块,并希望添加新的标签来显示部署中使用的TG和TF版本。

我以为这会奏效,但我错了。。

locals {
terraform_version      = "${run_cmd("terraform --version")}"
terragrunt_version     = "${run_cmd("terragrunt --version")}"
}
provider "aws" {
default_tags {
tags = {
terraform_version  = local.terraform_version
terragrunt_version = local.terragrunt_version
}
}
}

我相信有一个简单的方法可以做到这一点,但它暗示了我。

这是错误消息:

my-mac$ terragrunt apply
ERRO[0000] Error: Error in function call
ERRO[0000] on /Users/me/git/terraform/environments/terragrunt.hcl line 8, in locals: 
ERRO[0000] 8:   terraform_version      = "${run_cmd("terraform --version")}" 
ERRO[0000]                                              
ERRO[0000] Call to function "run_cmd" failed: exec: "terraform --version": executable file not found in $PATH.
ERRO[0000] Encountered error while evaluating locals in file /Users/me/git/terraform/environments/terragrunt.hcl 
ERRO[0000] /Users/me/git/terraform/environments/terragrunt.hcl:8,31-39: Error in function call; Call to function "run_cmd" failed: exec: "terraform --version": executable file not found in $PATH. 
ERRO[0000] Unable to determine underlying exit code, so Terragrunt will exit with error code 1

run_cmd函数为要运行的命令和要传递的参数使用单独的参数。您的示例尝试运行命令"terraform --version"而不是terraform --version。你应该更新你的代码如下:

locals {
terraform_version      = "${run_cmd("terraform", "--version")}"
terragrunt_version     = "${run_cmd("terragrunt", "--version")}"
}

在jordanm出色工作的基础上,我发现TG版本很好,但我需要删除TF输出中的一些冗长内容,才能将其用作aws标记。

locals {
terraform_version      = "${run_cmd("/bin/bash", "-c", terraform --version | sed 1q")}"
terragrunt_version     = "${run_cmd("terragrunt", "--version")}"
}

大家干得好!

相关内容

  • 没有找到相关文章

最新更新