问题标签 [terraform-modules]

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 投票
0 回答
46 浏览

gitlab - 尝试使用私有注册表中的嵌套 Terraform 模块

我对 Terraform 和调用模块的模块有疑问。每当我调用嵌套模块时,我得到的唯一输出是:

对于上下文,这是我正在尝试做的事情:

  1. 我有一个简单的模块,可以创建具有某些选项的 EC2 实例。(此模块创建 aws_instance 资源。)
  2. 我有第二个模块调用我的第一个模块并创建三个上述 EC2 实例并为每个节点设置一个唯一名称。
  3. 我有一个 Terraform 项目,它只调用第二个模块。

以上两个模块保存在我的私人 GitLab 注册表中。如果我创建了一个仅调用第一个模块的 Terraform 项目,它将创建 EC2 实例。如果我像执行普通项目一样执行第二个模块,则会创建三个 EC2 实例。我的问题是当我调用第二个模块时,它应该调用第一个模块,但它是它分崩离析的地方。

我想知道是否真的支持这种配置。我尝试测试的用例是建立一个 Kubernetes (K8s) 集群。我创建了一个定义计算资源的模块。然后,我创建了第二个模块,该模块使用 K8s 集群所需的选项定义计算模块。最后,我有一个项目,它定义了需要多少个 K8s 节点以及在哪些区域/可用区。

我将此称为嵌套模块,但在我所有的搜索中,嵌套模块似乎只指位于调用它们的 Terraform 项目中的模块和子模块。

在这里的任何帮助将不胜感激。这是我创建资源和调用模块的方式。这些是我用于测试的简单示例,而不是我将要创建的 K8s 模块。我只是想弄清楚我是否可以让嵌套的私有注册表模块工作。

第一个模块(计算)

第二个模块(嵌套集群)

Terraform 项目

0 投票
0 回答
25 浏览

arrays - 需要在 terraform EventBridge 模式的单个变量中传递 JSON 参数的映射

我目前正在寻找构建一个事件驱动的 EventBridge 事件模块(例如,与预定的事件模块相反),以便在我们的 IaaC 产品组合中使用。下面的示例代码显示了正常事件 JSON 模式的外观。我显然可以为“详细类型”和“源”添加一个普通的单个变量,但是有人可以建议一种创建某种单一映射变量的方法,我可以为“详细”映射传递一个或多个参数?

对此的需求是,在许多不同的服务中,我们可能需要“详细信息”中的任意数量的键和值参数,因此以某种方式传递可以具有任意数量的键值对的映射将是理想的。现在,如果这不是 json,我可以在 TF 中使用动态值,但我不确定如何使用它作为内联 JSON 模式。

在有人建议之前我还应该提到,我目前刚刚完成了将事件模式作为变量传递并使用数据和模板 json.tpl 文件的工作,该文件可以为每个资源的每次使用单独传递模式该模块,但想知道是否有人可以就我希望上面的解决方案提供建议?

任何建议将不胜感激!

0 投票
0 回答
21 浏览

amazon-web-services - 无法使用 terraform 模块在 EMR 集群中启动 Spot 实例队列

我正在尝试使用实例队列创建 EMR 集群。我提到了bid_price,它给了我如下错误,所以尝试提及bid_price_as_percentage_of_on_demand_price。在没有同时指定这两个选项的情况下进行了尝试,但不知何故,它每次都会以相同的细节出错 -

这是我来自 terraform 模块的核心实例队列块-

我的 terraform.vars-

所以不确定我哪里出错了。任何建议将不胜感激。谢谢!

0 投票
2 回答
78 浏览

terraform - 为不同的环境重用 Terraform 模块

我很难理解如何在一个 GCP 项目中将 terraform-google-modules/terraform-google-kubernetes-engine等模块重用于多个环境,例如生产、登台和开发。

我曾经有这样的结构:

我刚刚用值填写了 .tfvars 文件。现在我不知何故迷失了模块结构。查看terraform-google-modules/terraform-google-kubernetes-engine 示例,我不确定如何为不同类型的机器/磁盘定义多个节点池。

对我来说,README.md 中的示例看起来不像是模板和变量的清晰分离,它似乎是某种混淆(请不要冒犯,我想我只是不明白)。

更具体一点:如果我想拥有多个节点池,我需要在 development.tfvars、staging.tfvars 和 production.tfvars 中定义什么?

希望你能帮助我。干杯

0 投票
0 回答
21 浏览

terraform - 如何在不重复使用terraform的代码的情况下向ECS集群中添加多个服务

我需要将多个服务添加到现有的 ECS 集群中,具有不同的目标组,以及使用 Terraform 的 diff/same ALB。