问题标签 [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.
terraform - Terragrunt 或 Terraform 在变量中定义一个对象,其键/值数量未知
我有一个我想用我的模块创建的对象(桶)列表
有些字段是必需的,(如名称和位置)有些不是,如果此处未提供,我在资源中为它们提供了默认值;- 完整的模块和一切都是可操作的,但它没有在变量中定义“类型”就可以工作 - 所以它只需要一切,但我的问题是如何在variable
块中定义该对象?
和对象看起来如何具有可选字段
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 代码是这样的:
config - if 条件中的错误 - “加密”预期类型“布尔”,得到不可转换类型“字符串”
我正在尝试为两个环境(本地和云)定义一个配置块,并且我正在使用 if/else 条件,但我收到了 s3 存储桶的 encrypt 属性的错误消息:'encrypt' expected type 'bool',得到不可转换的类型“字符串”。如果我删除 if/else 条件块,那么它可以工作,但我需要在两个环境之间进行选择,所以我必须使用 if/else 条件。配置块代码:
terraform - 是否可以使用 terragrunt 调用多个 terraform 模块
我正在尝试从 terragrunt 调用多个模块。我知道目前 terragrunt 不支持多个源,我们一次只能调用一个模块。所以,我创建了一个 main.tf 文件来前端多个模块。
在 terragrunt 内部调用 main.tf 作为源,认为会调用模块 foo 和模块 bar。
这可以使用 terragrunt 吗?我需要一次对多个 terraform 模块进行分组。
amazon-web-services - 在 terragrunt 配置中使用变量
我们可以在 terragrunt 配置中使用 terraform 变量吗?
下面是我的 terragrunt 配置。
在 root.yaml 文件中,我传递了变量 bucket_name 和 key 的输入值。这些变量在 terraform 模块中定义。
这不起作用,terragrunt 抱怨未定义变量。如果不创建用于 terragrunt 的新变量,我们不能在 terragrunt 配置中使用 terraform 变量吗?
terraform - 创建一个主要的 terragrunt 依赖项
查看 Gruntwork 的这个示例项目,https://github.com/gruntwork-io/terragrunt-infrastructure-live-example,但改为针对 GCP 进行调整。
我希望我的项目通过一个模块创建它自己的 GCP 项目,然后我希望其余模块使用此信息,就像上面的示例使用帐户信息一样。但是,我不想手动在所有其他模块中添加依赖项,所以我如何通过主 terragrunt.hcl 文件应用它?
编辑:在尝试了更多之后,我认为 terragrunt 当前的工作方式是不可能的,因为似乎需要将依赖项硬编码到模块的 terragrunt.hcl 文件中。
terraform - Terragrunt - 不支持的属性 --- 但 tfstate 具有该属性
我无法弄清楚这一点,它发生了几次,这次我无法解决它。
我从 terragrunt 得到的错误是
terragrunt.hcl:25,47-50:不支持的属性;此对象没有名为“id”的属性。
我的问题是我试图引用的 id 存在于 tfstate 中,为什么它看不到它?
terragrunt.hcl 下面的缩短代码
输出.hcl
tfstate 直接从后端存储帐户中提取
terragrunt - terragrunt 可以通过使用 bash 脚本来支持后端变量吗?
我需要在后端配置中使用变量。Pre-Terragrunt,我通过在应用之前使用 Bash 初始化并生成我的计划文件来做到这一点,到目前为止效果很好。如果 terragrunt 不支持 s3 后端的 vars,是否可以改为使用 bash 脚本来执行 terraform init?或者我还有其他方法可以考虑吗?
我的 bash 脚本通常如下所示:
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 块?
terraform - Terragrunt - 同一配置文件中的引用变量
我正在对 terragrunt 配置进行一些更改,并且想知道是否可以在 hcl 文件的同一块中引用变量。
这会导致未找到 logName1 的验证错误。
我可以通过首先定义一个本地块来实现它:
有没有办法可以在同一个输入块中引用 name1 和 2?