问题标签 [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 投票
1 回答
626 浏览

terraform - Terragrunt 或 Terraform 在变量中定义一个对象,其键/值数量未知

我有一个我想用我的模块创建的对象(桶)列表

有些字段是必需的,(如名称和位置)有些不是,如果此处未提供,我在资源中为它们提供了默认值;- 完整的模块和一切都是可操作的,但它没有在变量中定义“类型”就可以工作 - 所以它只需要一切,但我的问题是如何在variable块中定义该对象?

和对象看起来如何具有可选字段

0 投票
2 回答
912 浏览

google-cloud-platform - 通过 for_each 循环创建的 Terragrunt 导入资源

我正在使用 for_each 循环创建一个 GCP 存储桶,并希望将现有存储桶导入我的 terraform 状态

资源已经存在但没关系,我可以导入它,问题是如何

因为像这样运行它

似乎有效,但它“错误地”导入了它

它在我的 tfstate 中显示,但应该是这样的

因为如果我现在运行 apply - 它说它要删除google_storage_bucket.buckets并创建google_storage_bucket.buckets["a-test-test-test"]

任何想法如何导入 terragrunt 中的 for_each ?

我试过了

没有人工作只是让我出错

而第一个选项terragrunt import google_storage_bucket.buckets a-test-test-test,导入(又名。工作)但不是正确的方式


terraform 代码是这样的:

0 投票
1 回答
112 浏览

config - if 条件中的错误 - “加密”预期类型“布尔”,得到不可转换类型“字符串”

我正在尝试为两个环境(本地和云)定义一个配置块,并且我正在使用 if/else 条件,但我收到了 s3 存储桶的 encrypt 属性的错误消息:'encrypt' expected type 'bool',得到不可转换的类型“字符串”。如果我删除 if/else 条件块,那么它可以工作,但我需要在两个环境之间进行选择,所以我必须使用 if/else 条件。配置块代码:

0 投票
2 回答
4819 浏览

terraform - 是否可以使用 terragrunt 调用多个 terraform 模块

我正在尝试从 terragrunt 调用多个模块。我知道目前 terragrunt 不支持多个源,我们一次只能调用一个模块。所以,我创建了一个 main.tf 文件来前端多个模块。

在 terragrunt 内部调用 main.tf 作为源,认为会调用模块 foo 和模块 bar。

这可以使用 terragrunt 吗?我需要一次对多个 terraform 模块进行分组。

0 投票
4 回答
390 浏览

amazon-web-services - 在 terragrunt 配置中使用变量

我们可以在 terragrunt 配置中使用 terraform 变量吗?

下面是我的 terragrunt 配置。

在 root.yaml 文件中,我传递了变量 bucket_name 和 key 的输入值。这些变量在 terraform 模块中定义。

这不起作用,terragrunt 抱怨未定义变量。如果不创建用于 terragrunt 的新变量,我们不能在 terragrunt 配置中使用 terraform 变量吗?

0 投票
1 回答
521 浏览

terraform - 创建一个主要的 terragrunt 依赖项

查看 Gruntwork 的这个示例项目,https://github.com/gruntwork-io/terragrunt-infrastructure-live-example,但改为针对 GCP 进行调整。

我希望我的项目通过一个模块创建它自己的 GCP 项目,然后我希望其余模块使用此信息,就像上面的示例使用帐户信息一样。但是,我不想手动在所有其他模块中添加依赖项,所以我如何通过主 terragrunt.hcl 文件应用它?

编辑:在尝试了更多之后,我认为 terragrunt 当前的工作方式是不可能的,因为似乎需要将依赖项硬编码到模块的 terragrunt.hcl 文件中。

0 投票
1 回答
881 浏览

terraform - Terragrunt - 不支持的属性 --- 但 tfstate 具有该属性

我无法弄清楚这一点,它发生了几次,这次我无法解决它。

我从 terragrunt 得到的错误是

terragrunt.hcl:25,47-50:不支持的属性;此对象没有名为“id”的属性。

我的问题是我试图引用的 id 存在于 tfstate 中,为什么它看不到它?

terragrunt.hcl 下面的缩短代码

输出.hcl

tfstate 直接从后端存储帐户中提取

0 投票
0 回答
69 浏览

terragrunt - terragrunt 可以通过使用 bash 脚本来支持后端变量吗?

我需要在后端配置中使用变量。Pre-Terragrunt,我通过在应用之前使用 Bash 初始化并生成我的计划文件来做到这一点,到目前为止效果很好。如果 terragrunt 不支持 s3 后端的 vars,是否可以改为使用 bash 脚本来执行 terraform init?或者我还有其他方法可以考虑吗?

我的 bash 脚本通常如下所示:

0 投票
1 回答
2180 浏览

terraform - 使用 terragrunt generate provider 块会导致与模块中的 require providers 块发生冲突

我将 Terragrunt 与 Terraform 版本 0.14.8 一起使用。

我的项目使用 mono repo 结构,因为项目要求将 Terragrunt 文件和 Terraform 模块打包在一个包中。

文件夹结构:

在 prd/terragrunt.hcl 中,我定义了远程状态块和生成提供程序块。

在 environment/prd/rds-cluster/terragrunt.hcl 中,我定义了以下内容:

在 modules/rds-cluster/main.tf 中,我定义了以下内容:

我的问题是,当我尝试在 下运行 terragrunt plan 时environments/prd/rds-cluster,我收到以下错误消息:

我可以通过在提供程序块中声明版本来解决这个问题,如下所示。但是,提供程序块中的 version 属性已在 Terraform 0.13 中被弃用;Terraform 建议使用 terraform 块下的 required_providers 子块。

有谁知道我需要做什么才能为我的 aws 提供程序使用新的 required_providers 块?

0 投票
0 回答
39 浏览

terraform - Terragrunt - 同一配置文件中的引用变量

我正在对 terragrunt 配置进行一些更改,并且想知道是否可以在 hcl 文件的同一块中引用变量。

这会导致未找到 logName1 的验证错误。

我可以通过首先定义一个本地块来实现它:

有没有办法可以在同一个输入块中引用 name1 和 2?