问题标签 [terragrunt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
660 浏览

amazon-web-services - Terragrunt - 更有效地重用模块

我一直在尝试以可以重用事物的方式重组我的 terraform 模块。我在这里试图解决的问题是避免创建新的 tf 模块,其中只有一两个用于特定设置的新属性。

目前的结构:

我也一直在考虑使用terraform-aws-ec2-instance git repo 作为我的 terragrunt 脚本中的源。这样,我根本不需要管理 tf 模块。但我不确定我应该如何编写 terragrunt.hcl 以指向 GitHub 存储库并与某个版本挂钩。

这是推荐的做事方式吗?或者有更清洁的方法吗?

terragrunt.hcl 中的内容 (1)

terragrunt.hcl 中的内容 (2)

尝试了上述设置,但面临缺少后端“s3”块的问题

0 投票
1 回答
130 浏览

azure - 输出带有模块的变量的问题

我正在尝试使用模块在 Azure 中创建多个元素。

目录结构看起来像

我运行的第一个计划是创建一个资源组,基本上每个后续计划都需要它的位置。

modules/rg/outputs.tf 包含:

stage/rg/outputs.tf 包含:

rg 中的计划运行良好,并输出

接下来我去构建 vwan,它的 main.tf 看起来像

查找 rg 变量失败

stage/vwan/terragrunt-debug.tfvars.json,它只包含 {}

所以,我试图确定为什么 rg 的输出没有作为其他计划的输入。有任何想法吗?

Terraform v0.13.3 terragrunt 版本 v0.25.1

0 投票
1 回答
3805 浏览

amazon-web-services - 从 Terraform 输入变量中获取 ECS 任务定义环境变量

我正在尝试使用 Terraform 部署 ECS 任务定义。这是我的 ECS 任务定义资源代码:

环境变量在这里是硬编码的。因此,我尝试从 terraform 输入中获取这些环境变量。所以,我修改了:

它给了我这样的问题:

我是 Terraform 的新手。我该如何解决这个问题?

0 投票
0 回答
296 浏览

amazon-web-services - 清除 terragrunt 缓存时与 TFC 中的状态(本地执行)失去同步

我有一个我正在研究的 AWS ou/account/infra 部署自动化管道,它使用 terragrunt、terraform 和 terraform 云将账户部署到 AWS 组织。我local在 TF Cloud 中使用执行,所以此时我在我的机器上本地运行它,并且只有状态存储在 TFC(与 S3 或 GCS 相对)中。Terragrunt 与这种状态存储技术兼容,但我发现如果我apply的资源(工作得很好)然后清理.terragrunt-cache( find . -type d -name ".terragrunt-cache" -prune -exec rm -rf {} \; ) 然后plan或者apply之前创建的资源,我会失去与远程状态的同步,它想要重新创建所有内容. 当我重新计划时,backend.tf文件由 Terragrunt重新生成.terragrunt-cache,我想知道提供者是否正在获取一个新 ID,该 ID 与另一个状态的先前提供者不同步。我要尝试的一种技巧是使用别名。根据 terragrunt 文档,这应该不是问题,因为状态会持续存在并且缓存可能会丢失和重新生成。

关于我的问题可能是什么的任何想法?我是 Terragrunt 的新手,现在正在做一些初步调查。

我的设计基于infrastructure-live示例(以及自述文件中链接的相应模块)。Terragrunt 在这里共享它:https ://github.com/gruntwork-io/terragrunt-infrastructure-live-example

terragrunt plan-all -refresh=true从这个目录结构运行:

account/我为帐户 (in ) 和根帐户 () 中的基础设施生成一个状态base/。所有 Terraform 模块都在一个单独的存储库中。

0 投票
1 回答
70 浏览

terraform - 如何指示 terragrunt 模块的自定义配置文件?

我正在尝试构建用于将基础架构部署到 Microsoft Azure 云的Terragrunt脚本。事情进展得很好,但我无法弄清楚一件事。

setup 的结构如下所示:

每个模块都使用 Terraform 自动加载 tfvars 功能和config.auto.tfvars.json. 我想要的是将这些文件放在目录结构之外,并以某种方式指示 Terragrunt 将正确的外部配置文件应用于正确的子模块。

有任何想法吗?

0 投票
0 回答
156 浏览

amazon-web-services - Terragrunt - 如何在同一模块中使用输出值

我正在 terragrunt 中部署不同的资源。当我在同一个 terragrunt.hcl 中我需要访问同一个模块中的输出基因时,我遇到了问题。

代码示例:

我需要提取在同一模块中生成的值:

  • aws_iam_role.this.arn
  • aws_cloudwatch_log_group.this.name

例如,访问其他目录中的输出对于dependency我在dependency-中的操作很容易vpc,因为输出位于其他父文件夹中。但是我从来没有遇到过我建议访问同一模块中生成的输出的情况

0 投票
0 回答
36 浏览

amazon-web-services - Terraform 帐户之间的依赖关系

我在使用 AWS SES 服务时遇到了问题。

理想情况下,我想使用 Terraform/Terragrunt 设置整个服务。不幸的是,我似乎无法解决如何去做。

要设置 SES 域,我需要针对我要使用的域进行验证。我要使用的域存在于不同的 AWS 账户中。所以从技术上讲,我需要运行 aws_ses_domain_identity 资源来获取域身份的 id,然后我需要使用 aws_ses_domain_identity 资源给我的 TXT 值在我的另一个 AWS 账户中创建 Route53 记录,最后我需要运行aws_ses_domain_identity_verification 来验证域。

以下是我所指的资源:

如何使用 Terraform 解决这个问题?当模块如此紧密地交织在一起时,我认为将它们分成三个独立的模块是没有意义的。我是否在同一个模块中使用了两个不同的 AWS 提供商(DNS 账户、SES 账户)?

0 投票
1 回答
615 浏览

terraform - 如何从 Terratest Go 脚本调用 Terragrunt HCL 文件?

我有一个 terragrunt 脚本,它在运行 terragrunt apply-all 命令行后运行良好,但同样的事情我无法执行/调用表单 Go 脚本。使用TgApplyAll函数

下面是我的 Go 脚本 工作 terragrunt 脚本保存在 D:\vertica-terragrunt-US-286094-Modules\with-infra 位置,并且可以使用手动terragrunt apply-all命令正常工作,但是从 Go 脚本我收到错误

在此处输入图像描述

得到如下错误

''' github.com/gruntwork-io/terratest/modules/terraform.TgInvalidBinary.Error(...) c:/go/pkg/mod/github.com/gruntwork-io/terratest@v0.30.15/modules/ terraform/errors.go:12

详细错误 func (err TgInvalidBinary) Error() string { return fmt.Sprintf("terragrunt 必须设置为 TerraformBinary 才能使用此函数。[ TerraformBinary : %s ]", err) } '''

我使用了与从 terratest Go 脚本调用 terraform 代码相同的代码来调用 terragrunt 代码,但它不起作用

任何人都可以帮助我/指导我到某个位置,例如如何从 terratest Go 脚本调用工作 terragrunt 代码?

0 投票
2 回答
195 浏览

amazon-web-services - 将现有基础设施从 terraform infra 移动到 terragrunt

我在 terraform 中有我现有的代码,并且我的基础设施已在 aws 中启动并运行。现在我想移到 terragrunt ,但是我可以将我的 terraform 代码移到 terragrunt 吗?类似于 terraform mv 命令我们在 terragrunt 中有什么吗?

0 投票
1 回答
249 浏览

terragrunt - Terragrunt 依赖列表输出作为输入

我有两个入口点:s3 和 do_something。s3 是 do_something 的依赖项,具有以下代码:

terragrunt.hcl

主文件

--terragrunt-debug 看起来像:

在 do_something 文件夹中,我有 terragrunt.hcl:

变量.tf

如何获取 build_bucket 的每个元素?

这没有用: