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

terraform - Terraform 子模块对调用资源的依赖

我正在尝试在多个子模块之间创建依赖关系,这些子模块应该能够单独创建资源,并且应该能够在它们相互依赖时创建资源。

基本上我正在尝试创建多个虚拟机,并基于作为输出返回的 ip 地址和 vip ip 地址,我想创建 lbaas 池和 lbaas 池成员。

我保持项目结构如下

call_module.tf 包含对 lbaas-pool 模块和 lbaas-pool-members 的引用,因为这两个模块依赖于 main.tf 文件生成的资源的输出。它给出以下错误:

尚未声明托管资源。

由于尚未生成资源,并且在运行 terraform plan 和 apply 命令时正在尝试加载尚未创建的资源对象。不确定他的结构是否声明了资源之间的模块隐式依赖关系,以便模块可以单独工作以及在需要时完整堆栈。

预期行为:

main.tf 输出参数应该在 terraform 版本 0.14 中自动创建依赖项,但从上述错误看来情况并非如此。

0 投票
1 回答
744 浏览

azure - 未在 module.vm 中声明托管资源“azurerm_network_interface”“myterraformnic”。天蓝色

我创建了两个模块:

  1. 网络 2. 虚拟机 在 network.tf 中,我为 azure 添加了网络配置,在 vm.tf 中,我正在尝试创建一个虚拟机。从 main.tf 调用这两个模块我收到此错误:

    在 ..\modules\vm\vm.tf 第 20 行,在资源“azurerm_windows_virtual_machine”“myterraformvm”中:20:network_interface_ids = [azurerm_network_interface.myterraformnic.id]

    未在 module.vm 中声明托管资源“azurerm_network_interface”“myterraformnic”。

这是 vm.tf 的代码

这是network.tf的代码

主文件

目录结构:

0 投票
0 回答
93 浏览

terraform - 通过 ssh 密钥远程使用 Terraform 模块的 Teamcity 代理

我正在尝试运行包含来自 Bitbucket 云存储库的模块的 terraform 代码。

我在本地机器上运行的步骤如下:

  1. Personal Settings在 Bitbucket Cloud 上添加 SSH 密钥
  2. Build Features作为指南在 Teamcity 上设置https://www.jetbrains.com/help/teamcity/2020.2/ssh-agent.html
  3. 通过远程使用模块更新 Terraform 代码:​​https://www.terraform.io/docs/language/modules/sources.html#generic-git-repository

构建脚本已运行terraform init,但无法下载源代码

如何在 Teamcity 上实现这一目标

0 投票
1 回答
222 浏览

amazon-web-services - Terraform 将新安全组添加到现有安全组

我在 terraform 的 Autoscaling 模块中创建了一个新的安全组。我想将此安全组添加到模块数据库中的现有安全组中。数据库模块中使用的安全组已经通过控制台创建。如何将新的安全组添加到 terraform 中的现有安全组?

0 投票
1 回答
195 浏览

terraform - Terraform:我可以将 ignore_changes 传递给模块吗?

我可以传递ignore_changes给 terraform 模块吗?就我而言,我不想在更新 AMI 时更新自动缩放组。

简单回顾了一下,好像做不到——https: //github.com/hashicorp/terraform/issues/21546

当然,我可以有两个复制粘贴的模块版本——一个有ignore_changes一个没有,但看起来不太好。也许我只是错过了什么?

0 投票
1 回答
71 浏览

terraform - Terraform 重构以在模块记录块中使用 azurerm_dns_txt_record

我在 terraform 模块中有以下代码:

添加记录块似乎不是一种非常干净的方法,但我找不到更好的方法。

我试过用这种方式重构它:

但不幸的是,这会导致我们的 DNS 中只有一条 MX 记录,我们应该在其中插入 7 个项目。似乎每个项目都插入到前一个项目之上。

如您所见,每个记录块都需要在资源中分开:MX记录资源

谁能想到一种更好的方式来构建这个 terraform?

0 投票
0 回答
362 浏览

amazon-web-services - 无法使用 configuration_aliases 发布 terraform 模块

我的模块中有一个versions.tf,它为AWS 提供商建立了3 个别名。

configuration_aliases = [ aws, aws.pr, aws.sr ] -> Unable to publish,提示错误

错误:加载模块时出错:不允许使用变量:此处不能使用变量。(和其他 2 条消息)(在第 6 行的versions.tf 中)

configuration_aliases = [ "aws", "aws.pr", "aws.sr" ] ->能够发布但不能消费

需要单个静态变量引用:仅使用常量键进行属性访问和索引。这里不允许计算、函数调用、模板表达式等。

0 投票
1 回答
88 浏览

azure - 使用 Terraform 模块

我们在 Azure 中预配登陆区,主要使用以下内容:

  1. Terraform 作为我们的 IaC。
  2. 用于预配所需 Azure 资源的 Azure Pipelines。

由于我们将在多个环境(开发、测试和生产)中进行配置,我们已经确定了一种模块化方法作为我们 Terraform 代码的首选选项。因此,我想要一个非常基本的示例,说明如何为部署在所有三个环境(开发、测试和生产)中的 3 个资源组组合一个 Terraform 模块。

希望我可以采用相同的概念以模块化方式提供其他资源。

0 投票
0 回答
115 浏览

terraform - 带有 inline_policy 的 iam_assumable_role_custom

我创建了一个 terraform 以使用 terraform-aws-iam 将 newrelic 与我的 aws 集成

现在我必须创建另一个策略并将其放入模块中,因为模块的aws_iam_policy.NewRelicBudget这一部分不支持 inline_policy 吗?

0 投票
1 回答
393 浏览

amazon-web-services - 如何在 Terraform 的资源中引用模块的值

我正在尝试在 http_listener_rule 资源中使用 ALB 模块值。我发现只有一种方法是使用以下语法:资源中的“${module.alb.http_tcp_listener_arns}”但这会引发以下错误:属性“listener_arn”的值不合适:需要字符串。

出现以下错误:错误:main.tf 第 197 行的属性值类型不正确,在资源“aws_lb_listener_rule”“host_based_routing”中:197:listener_arn = “${module.alb.http_tcp_listener_arns}”├──────── ──────── │ module.alb.http_tcp_listener_arns 是空元组

属性“listener_arn”的值不合适:需要字符串。