问题标签 [terraform0.12+]

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 回答
309 浏览

terraform - 在terraform中增加标签索引

我正在寻找一种方法来区分我的模块中的标签名称,并且知道那里有一个障碍,因为您不能在模块中使用计数,我想根据公众的位置增加我的标签名称子网,我该怎么做?

0 投票
1 回答
2186 浏览

terraform - terraform中的“环境中至少需要一个字段”错误

当我尝试应用 terraform 以创建 lambda 函数时,出现此错误:

这是我的地形模块:

var.variables设置为 null时会引发此错误。

我该如何解决?

我正在使用 terraform 0.12.6 和 aws provider 2.25.0

0 投票
1 回答
210 浏览

terraform0.12+ - 如何为 aws_iam_policy_document 创建可重用的语句块?

我有几个aws_iam_policy_document这样的

政策1

政策2

我还有一些政策都有一些变化。

现在我希望能够statement为所有这些策略插入一个相同的块。

它尚未经过测试,但语句将如下所示:

最有效的方法是什么?我想避免将相同的语句块复制并粘贴到所有策略中。

0 投票
1 回答
3724 浏览

terraform - 使用 terraform 0.12+ 计算输出变量

我有条件地创建一个带有计数的资源:

那么我如何有条件地输出这个资源的价值呢?我试着到处玩,Terraform 似乎自相矛盾

首先它告诉我在输出中使用计数。

然后当我尝试它说我不能使用计数时。

以前我们可以执行以下操作,但现在这会触发我之前发布的计数错误。

知道这现在是如何工作的吗?

谢谢,

0 投票
0 回答
1202 浏览

terraform - 使用 terraform 0.12 中的列表迭代地图

我正在使用 terraform 0.12.8 并且我正在尝试编写一个可以迭代以下变量结构的资源:

我的资源:

所以,我可以遍历我的地图。但是,我不知道如何验证是否var.tags["Environment"]为特定应用启用了该功能,例如app1.

基本上,我想确保为每个应用程序创建资源,只要环境变量在应用程序映射中引用应用程序名称的列表中。

有人可以帮我吗?

请注意,如果您有什么建议可以实现我的目标,我很乐意使用不同的变量结构。

0 投票
1 回答
5053 浏览

terraform - 使用 for_each 创建的资源中带有 for_each 的动态块

我正在尝试使用 Terraform 0.12+ 及其新的 for_each 在 Azure 中构建多个 vnet,但遇到了一些麻烦。我希望新功能能够让我创建一个接收复杂变量的通用网络模块,但我可能已经达到了它的极限,或者我只是没有正确地思考它。基本上我的变量是这样构建的

您可以看到它是一个网络数组,其中包含该网络的子网子数组。这样做可以轻松记录网络,而无需额外的 terraform 资源要求,因此我们的网络团队可以轻松调整/扩展,而无需担心了解 HCL。

我可以使用计数及其索引执行构建多个 vnet 资源的必要功能,但我想使用 for_each 因为它允许索引键而不是可能随时间变化的计数(需要重新部署,我们不能做)。

网络对象

我已经尝试并通过将对象更改为映射然后使用 each.key 和 each.value(为 each.value 执行 cidrsubnet)成功地构建了带有 for_each 的 vnet,但问题在于制作子网。

由于地图不包括那些子网,所以我只是把头撞在墙上。有没有人有什么建议?或者当我不需要的时候,我真的让这个过于复杂吗?

有效的资源创建,但没有子网

我希望我可以使用动态块,并可能对其进行过滤以匹配网络资源中的 each.key。之后我也尝试过用自己的子网资源来做,但就是想不通。

这是我希望能起作用的全部资源

0 投票
1 回答
3470 浏览

terraform - Terraform 0.12 模块中的可选资源

我将 terraform 从 0.11 迁移到 0.12。我有一个模块,它应该配置 AWS SQS 队列和可选的死信队列。

我的回购在这里

我对队列资源有以下条件:

在使用 DLQ 创建队列时首次运行attach_dead_letter_config=true,但当我想删除 DLQ ( attach_dead_letter_config=false) 时,当 terraform 计划运行时出现问题:

在模块中创建此类可选资源的正确方法是什么?

0 投票
1 回答
177 浏览

azure - 无法从 terraform 0.12 中的模块输出访问列表的所有元素

我无法使用模块输出将多个 nic 连接到单个 vm。似乎元素功能一次只能通过一个元素。有什么方法可以只调用模块输出列表中的特定索引。Terraform v0.12.7

0 投票
1 回答
530 浏览

azure - 如何在 Terraform 的 virtual_machine 资源中使用 shared_image 计划数据,如发布者、报价和 sku

使用 Terraform v0.12.9,azurerm 提供程序 v1.36.1

设想:

  • 您已基于第三方市场映像创建了映像。
  • 您已将此图像发布到共享图像库。
  • 您已经能够使用 Terraform 和 Azure Devops 管道以自动化方式执行此操作。(例如 CIS 硬化图像)
  • 对于上述每个步骤,您都提供了计划信息数据。否则,您将无法从此映像创建 VM,因为使用市场映像会产生额外费用。

  • 现在,您希望其他团队能够通过 Terraform 自动化使用来自共享图像库的图像。

如何在不进行硬编码的情况下从共享图像中获取计划信息?

好吧,我想只使用以下数据源检索数据:

并在 virtual_machine 资源中使用必要的块,如下所示:

但是,我收到一条错误消息:

对于每个 sku、出版商和报价。

0 投票
1 回答
1612 浏览

dynamic - 具有多个内容字段的 Terraform v12 动态嵌套块?

我的 Azure App Gateway 模块遇到问题。我已将所有内容都转换为动态块,当我使用 1 个应用程序的输入调用我的模块时,它运行得非常好。

1 个应用程序:

但是,当我将第二个应用程序添加到我的通话中时,这就是我看到问题的时候。

2 个应用程序

添加新应用时,它同时具有 80 重定向和 443 规则。然而,由于索引,terraform 想要覆盖我的第一个应用程序规则,以便 80 条重定向规则在列表中排名第一和第二,然后是 443 规则在列表中排名第三和第四。我们可以在一个动态块中做多个内容块吗?正如您所看到的,当我将第二个应用程序添加到模块时,第一个应用程序正在发生变化,导致键不匹配(即 app1 id 与 app2 键不匹配等)。我的 http_listener 也发生了同样的事情

输出变化

建议的配置,不起作用

每个动态块多个内容块

或动态块内的嵌套动态块,也不起作用

有谁知道如何解决这个问题?如果现有应用程序将更改并且必须在每次添加新应用程序时被污染和重新创建,则使应用程序网关模块不可用。