gpt4 book ai didi

terraform - 我可以在 Terraform Cloud 上使用 Terragrunt

转载 作者:行者123 更新时间:2023-12-03 14:59:37 25 4
gpt4 key购买 nike

我有一个包含 Terraform Cloud 的配置管道,我们的领导层要求我们使用 Terragrunt 来提高 Terraform 代码质量。
Terragrunt 是一个很好的工具,但我没有看到任何证据表明有人在 Terraform Cloud 上成功使用了它。
任何人都可以解决这个问题吗?请只回答,如果你要么

  • 自己做过,或
  • 可以提供文件证明这是可行的,或
  • 提供不是一个好主意的文档或
  • Terraform Cloud 是不可能的。
  • 最佳答案

    Terragrunt 希望您运行 terragrunt命令,并在后台运行 terraform命令,传递 TF_VAR_* environment variables . TFC 也运行 terraform直接命令。因此,您不能在 TFC 中运行 Terragrunt - 它不会执行 terragrunt二进制,只有 terraform二进制。
    但是,您可以使用 CLI 中的 Terragrunt 在 TFC 上使用 remote backend 执行 Terraform 运行。 .在这种模式下,您像往常一样运行 Terragrunt 命令,当调用 Terraform 时,它实际上在 TFC 中执行。您可以在 TFC UI 中查看运行情况,将状态存储在 TFC 中等。但是,由于上述限制,您无法从 UI 中实际运行 Terragrunt。
    要进行设置,首先您需要获取 API token 和 configure the CLI with a credentials block in .terraformrc .
    接下来,您需要 generate一个 backend堵塞:

    generate "remote_state" {
    path = "backend.tf"
    if_exists = "overwrite_terragrunt"
    contents = <<EOF
    terraform {
    backend "remote" {
    hostname = "app.terraform.io" # Change this to your hostname for TFE
    organization = "your-tfc-organization"
    workspaces {
    name = "your-workspace"
    }
    }
    }
    EOF
    }
    此代码生成一个名为 backend.tf 的文件在您的 Terraform 模块旁边。这指示 Terraform 使用 TFC 作为远程后端。它将使用名为 your-workspace 的工作区.如果此工作区不存在,TFC 将使用 implict workspace creation 自动创建它.您在 Terragrunt 中调用的每个模块都将拥有一个工作区。
    TFC 不支持 TF_VAR_* “stock” Terraform 支持的环境变量。因此,Terragrunt inputs block ,这是 Terragrunt 将变量传递给 Terraform 的标准方式,不起作用。
    相反,您可以创建一个 *.auto.tfvars.json file .您也可以在 Terragrunt 中生成此文件:
    generate "tfvars" {
    path = "terragrunt.auto.tfvars.json"
    if_exists = "overwrite"
    disable_signature = true
    contents = jsonencode({name = "your-name"})
    }
    模块所需的所有变量都应作为 JSON 传递给 contents上面的属性。更灵活的模式是使用 locals block设置变量,然后在 content 中传递这些变量堵塞。首选 JSON 以避免类型问题。
    最后一个问题是,当自动创建工作区时,它不会具有与云提供商交互所需的 API 凭据(例如 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY )。您可以通过创建 provider.tf 在提供程序配置中定义它。文件,但是凭据是静态的并且是纯文本的。不好。
    相反,您可以手动设置每个工作区中的环境变量,也可以使用 tfe_workspace tfe_variable 资源,以便提前使用 Terraform 创建它们。推荐使用后一种方法,因为它是程序化的,如果您需要轮换凭据,更新起来会容易得多。
    在这两种情况下,您都需要为 Terragrunt 调用的每个模块提供一个工作区。
    另见: this blog post关于这个话题和 this content关于与 Terragrunt 的集成。

    关于terraform - 我可以在 Terraform Cloud 上使用 Terragrunt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60062705/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com