【问题标题】:How do I save the output variable from terragrunt apply as regular shell environment variable?如何将 terragrunt apply 的输出变量保存为常规 shell 环境变量?
【发布时间】:2020-12-11 11:07:20
【问题描述】:

在我的 CI 步骤中运行我的terragrunt apply-all 之后(基本上是一个 bash 脚本)我得到了我的输出,在这种情况下我只有一个:

output "cloudrun-hostname" {
  value       = google_cloud_run_service.cloudrun.status[0].url
  description = "API endpoint URL"
}

我如何将该输出的值传递给环境变量,所以基本上就像我导出了这样的变量:

export HOSTNAME=terragrunt-cloudrun-hostname-output

我需要这个具有该值的变量,以便稍后我可以在另一个文件中 envsub 中的值。

【问题讨论】:

    标签: bash terraform


    【解决方案1】:

    你可以使用the terraform output命令,即

    export MY_ENV=$(terraform output cloudrun-hostname)
    

    在你的apply-all之后。

    【讨论】:

    • 我发现只有 terragrunt output-all 出于某种原因对我有用。然后我只是从所有行中获取值。
    • 我打赌 Terragrunt 中的 output-all 在 Terraform 中使用 output。所以我并不感到惊讶。另外 - 我认为不 parse Terragrunt 或 Terraform 输出更清洁。
    • 当然可以。 Terragrunt 从字面上向您展示了它使用的 Terraform 命令,例如terraform output cloudrun-hostname,但是当我尝试复制 Terragrunt 并使用它使用的相同命令时,我得到了错误。具有讽刺意味的是,Terragrunt 文档声称 output-all 命令有点损坏。
    【解决方案2】:

    你需要扩展命令,所以:

    export HOSTNAME="$(terragrunt apply-all | awk -F= '/value/ { gsub(" ","",$2);print $2 }')"
    

    【讨论】:

    • 当然可以,但是terragrunt-cloudrun-hostname-output 是什么?这只是真正的命令或价值的替代品。
    • 好的,我已经修改了答案,用 awk 解析输出。
    • 我很抱歉造成混乱。 terragrunt-cloudrun-hostname-output 根本没有任何意义。
    • 好的,所以应该是 terragrunt apply-all?
    猜你喜欢
    • 2020-11-13
    • 2021-12-23
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2022-08-08
    • 2021-03-28
    相关资源
    最近更新 更多