问题标签 [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.
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 中自动创建依赖项,但从上述错误看来情况并非如此。
azure - 未在 module.vm 中声明托管资源“azurerm_network_interface”“myterraformnic”。天蓝色
我创建了两个模块:
网络 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的代码
主文件
目录结构:
terraform - 通过 ssh 密钥远程使用 Terraform 模块的 Teamcity 代理
我正在尝试运行包含来自 Bitbucket 云存储库的模块的 terraform 代码。
我在本地机器上运行的步骤如下:
Personal Settings
在 Bitbucket Cloud 上添加 SSH 密钥Build Features
作为指南在 Teamcity 上设置https://www.jetbrains.com/help/teamcity/2020.2/ssh-agent.html- 通过远程使用模块更新 Terraform 代码:https://www.terraform.io/docs/language/modules/sources.html#generic-git-repository
构建脚本已运行terraform init
,但无法下载源代码
如何在 Teamcity 上实现这一目标
amazon-web-services - Terraform 将新安全组添加到现有安全组
我在 terraform 的 Autoscaling 模块中创建了一个新的安全组。我想将此安全组添加到模块数据库中的现有安全组中。数据库模块中使用的安全组已经通过控制台创建。如何将新的安全组添加到 terraform 中的现有安全组?
terraform - Terraform:我可以将 ignore_changes 传递给模块吗?
我可以传递ignore_changes
给 terraform 模块吗?就我而言,我不想在更新 AMI 时更新自动缩放组。
简单回顾了一下,好像做不到——https: //github.com/hashicorp/terraform/issues/21546
当然,我可以有两个复制粘贴的模块版本——一个有ignore_changes
一个没有,但看起来不太好。也许我只是错过了什么?
terraform - Terraform 重构以在模块记录块中使用 azurerm_dns_txt_record
我在 terraform 模块中有以下代码:
添加记录块似乎不是一种非常干净的方法,但我找不到更好的方法。
我试过用这种方式重构它:
但不幸的是,这会导致我们的 DNS 中只有一条 MX 记录,我们应该在其中插入 7 个项目。似乎每个项目都插入到前一个项目之上。
如您所见,每个记录块都需要在资源中分开:MX记录资源
谁能想到一种更好的方式来构建这个 terraform?
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" ] ->能够发布但不能消费
需要单个静态变量引用:仅使用常量键进行属性访问和索引。这里不允许计算、函数调用、模板表达式等。
azure - 使用 Terraform 模块
我们在 Azure 中预配登陆区,主要使用以下内容:
- Terraform 作为我们的 IaC。
- 用于预配所需 Azure 资源的 Azure Pipelines。
由于我们将在多个环境(开发、测试和生产)中进行配置,我们已经确定了一种模块化方法作为我们 Terraform 代码的首选选项。因此,我想要一个非常基本的示例,说明如何为部署在所有三个环境(开发、测试和生产)中的 3 个资源组组合一个 Terraform 模块。
希望我可以采用相同的概念以模块化方式提供其他资源。
terraform - 带有 inline_policy 的 iam_assumable_role_custom
我创建了一个 terraform 以使用 terraform-aws-iam 将 newrelic 与我的 aws 集成
现在我必须创建另一个策略并将其放入模块中,因为模块的aws_iam_policy.NewRelicBudget
这一部分不支持 inline_policy 吗?
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”的值不合适:需要字符串。