问题标签 [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 回答
989 浏览

google-cloud-platform - Terragrunt 将地图转换为字符串

在我的terragrunt.hcl文件中,我将几个变量传递给一个模块 - 其中一个是 map 和 list

但是当我将它传递给一个模块时

它不理解它并将其视为一个字符串

有人对可能是什么问题有任何想法吗?

0 投票
2 回答
2078 浏览

git - 来自特定分支的 Terragrunt 下载模块

我最近开始使用 terragrunt 并且一直想知道是否可以从特定分支而不是特定标签(或除了标签)而不是默认的 master 下载模块

从 master 下载特定标签:

从 repo 下载特定的分支?

0 投票
1 回答
1102 浏览

linux - 轻松交换 terraform 版本的工具

我找到了工具tfenv,并tfswitch轻松快速地更改了 terraform 和 terragrunt 版本 - 我猜这些工具可以工作,因为人们使用它,但由于某种原因,他们不会在我运行后更改我计算机上的版本让我们说

看来我正确切换到 version 0.12.25,但是在用 terraform 检查后它没有改变

工具也是如此tfenv,有人遇到过这个问题吗?我也尝试使用 sudo 运行它,但没有成功 - 我看到二进制文件正在下载到这些工具的配置目录,我什至将它们添加到 PATH,但它们不会覆盖主文件terraformterragrunt二进制文件,这就是我离开的原因对于旧版本,有什么想法吗?

0 投票
2 回答
501 浏览

terraform - Terragrunt 输出到环境变量 GitLab CI/CD

我正在尝试运行“Terragrunt plan -out=$PLAN”,但似乎我做不到?我的目标是输出一个计划,然后显示该计划并发布到 GitLab 合并请求。

我应该如何去完成这个?

这是我到目前为止所拥有的:

0 投票
1 回答
722 浏览

terraform - 如何在 terraform 代码中访问 terragrunt 变量

我有 terragrunt 配置,其中已在根级别使用本地变量声明变量,如下所示。在子模块中,声明了名为 (terragrunt.hcl) 的子 terragrunt 配置文件。父 terragrunt 文件具有以下代码:

子模块 terragrunt 文件具有以下代码:

现在,尝试使用以下代码访问locationterraform 代码 () 中的变量:main.tf

但它会引发错误:

不知道如何访问 terraform 代码中 terragrunt 文件中定义的变量。请建议

0 投票
0 回答
177 浏览

amazon-web-services - 如何在 common.tfvars 中注入环境变量

如何在 common.tfvars 文件中注入环境变量

前任

并在 common.tfvars 中使用它

预先感谢您的帮助

0 投票
2 回答
833 浏览

terraform - Terragrunt DRY 配置优于“本机”Terraform 的优势?

我刚刚了解了 Terragrunt。虽然我看到了 Terraform 中缺少的一些好东西,但我并不完全理解 DRY 配置方面的真正好处(这似乎是 Terragrunt 最受推崇的方面)。

在我见过的所有这些示例中,HCL 文件(例如,用于各个阶段的文件)对我来说看起来相当多余——而且基本上包含的信息与module {}在普通 Terraform 中的块中传递的信息相同。

难道你不能通过在普通的 Terraform 中编写一个只实例化其他模块的“组合模块”,用大致相同数量的代码来实现同样的事情吗?我错过了什么吗?

0 投票
2 回答
541 浏览

amazon-web-services - 强制 Terraform 在 AWS Elasticache Redis 集群上应用挂起的更改

我正在尝试使用 Terraform将 Elasticache 的节点类型从老一代(cache.t2. )更改为新一代(cache.t3. )。

能够通过 成功修改所有 Memcached 实例的节点类型terraform apply,但不幸的是,当我尝试使用terraform apply命令更改 Redis 的节点类型时,该命令在大约 30 秒内完成并且没有应用任何更改。

要应用节点类型更改,我必须登录到 Web 控制台并单击单个 Redis 实例并单击修改并应用待处理的更改并等待它完成。这对我来说是手动工作,我必须为 100 个 Redis 实例执行此操作。

是否可以强制 terraform 在 Elasticache 上应用 Redis 的待定更改?

0 投票
1 回答
200 浏览

terragrunt - Terragrunt plan-all auto-init 似乎不起作用

我遇到了一个问题,运行terragrunt plan-all要求我首先运行“terragrunt init”.. 阅读https://terragrunt.gruntwork.io/docs/features/auto-init/#auto-init .. 它说它应该“自动初始化”,但这似乎没有发生..我使用的是 v0.23.31 ..我读错了自动初始化功能吗?

0 投票
1 回答
2768 浏览

amazon-web-services - Terragrunt 路径解析 - 本地引用的模块 - 拆分为多个环境

出于与业务相关的原因,我无法使用版本化模块拆分我的基础架构。由于拆分环境仍然有益,并且我想避免复制/粘贴根模块,它们基本上只是子模块的实例化,在多个目录中,每个目录代表自己的环境,我想指定的来源terragrunt.hcl中的根模块

为了让生活更轻松,我构建了当前基础架构的一小部分,只需一个模块即可加快开发速度。

该项目的当前结构如下所示:

我所有的基础设施都在infrastructure-modules/ecs/*.tf文件中描述,这些文件基本上只是实例化在terraform-modules/terraform-aws-*/.

infrastructure-modules/ecs有了它,我可以简单地从目录中执行 terragrunt(terraform 命令) 。

为了有可能在另一个帐户中创建相同的环境,我引入了一个新目录environments/dev/eu-central-1/ecs,如根目录的树输出所示。

,environments/dev/eu-central-1/ecs仅包含两个文件,terragrunt.hclcommon.tfvars

我想,common.tfvars的用法是不言自明的,我的terragrunt.hclremote_state {}terraform {}块组成。

terragrunt 配置文件的重要部分:

上面我基本上是在引用我的根模块,在infrastructure-modules/ecs/*.tf. 我的根模块正在实例化在terraform-modules/terraform-aws-*/.

子模块infrastructure-modules/ecs/*.tf的实例化如下:

在理想的世界中,我将能够从environments/dev/eu-central-1/ecs目录执行 terragrunt (terraform) 命令,但是由于我使用的是本地(相对)路径,因此在模块初始化期间这会失败,因为根模块my_module会加载子模块以下相对路径:

这导致模块实例化environments/dev/eu-central-1/ecs失败,因为相对路径不同,基于父模块实例化。

到目前为止,根据文档,path_relative_*应该能够返回其包含块中指定的路径与当前 terragrunt.hcl 之间的相对路径,但这里的问题是我的文件中没有任何include {}terragrunt.hcl因此这种方法不起作用。符号链接是最后的选择。

编辑

如果我检查.terragrunt-cache/*on 路径environments/dev/eu-central-1/ecs,我可以确认所有“根”模块都已下载(复制)到缓存目录中。

但是,模块是这样实例化的,它会尝试从上面两级的目录中获取实际的模块(Terraform 模块)。

所以基本上,我需要告诉 Terragrunt 从其他路径下载/获取模块。

编辑2:

检查我正在运行的目录中的 .terragrunt-cacheinit显示,terraform-modules从未在 terraform-infrastructure/environments/dev/eu-central-1/ecs/.terragrunt-cache/.

如果我改变我的terraform-infrastructure/infrastructure-modules/ecs/ecr-repos.tf, 从

至:

Terraform 能够初始化子模块,因为我terraform-modules/在根目录中给出了相对路径,这显然是一种解决方法。

不知何故,我期待 Terragrunt 下载这两个目录,terraform-modulesinfrastructure-modules让模块实例化中的相对路径起作用。