问题标签 [terraform-template-file]
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.
amazon-web-services - Terraform - response_parameters:应该是地图
我有一个api_gateway
运行良好的 terraform 脚本。我有很多重复的模板。我想使用"data" "template_file"
.
工作解决方案:
重构后:
response_parameters.tptl:
错误:
由于响应参数对我所有的都是通用的aws_api_gateway_integration_response
,我希望有一个通用的模板并在所有资源中重用。
为什么我会收到此错误?
module - Terraform 模块依赖关系破坏了 template_file
不确定这是一个错误还是我做错了什么。当我在两个模块之间引入依赖关系时,依赖模块的 template_file 数据中的变量起作用并且 terraform 抱怨它找不到它。
我有两个模块,saltmaster 和 cassandra。目标是让 saltmaster 通过输出变量公开其 IP 地址,并让 cassandra 使用它。
如果我通过将 IP 地址硬编码为 cassandra 模块的输入来切断模块之间的依赖关系,那么所有资源都会正确创建。但是当我引入依赖项时,terraform 抱怨:
- module.cassandra.aws_instance.momentum_cassandra[2]:资源“data.template_file.momentum_cassandra”没有变量“data.template_file.momentum_cassandra.*.vars.hostname”的属性“vars.hostname”
请注意,我在 template_file 的 vars 部分定义了 cassandra 实例的主机名,然后在 aws_instance 的 tags 块中使用它。并且它单独工作正常,但是当 cassandra 模块依赖于 saltmaster 模块时会中断。
卡桑德拉.tf
主文件
saltmaster.tf
terraform - 从一个计划到另一个计划的资源输出值
我有两个计划,其中我正在创建两个不同的服务器(例如,否则它真的很复杂)。在一个计划中,我正在输出安全组的值,如下所示:
我有第二个计划,我想在其中使用该价值,如何实现它,我尝试了几件事,但对我没有任何作用。
我知道如何使用output
返回值,module
但不知道如何将output
一个计划用于另一个计划。
terraform - Terraform:如何将文件资源与实例和 RDS 分离
我有一个要部署到 AWS 的标准 2 层应用程序。作为此部署的一部分,我需要将配置文件写入 EC2 实例。此配置文件包含数据库 (RDS) 设置。现在,我将此文件定义为 EC2 实例中的提供程序。所以 terraform 所做的是,在 RDS 100% 启动并运行(大约需要 5 分钟)之前,它甚至不会开始构建 EC2 实例。这使事情变得非常缓慢。
有没有办法可以在 EC2 实例的上下文之外创建文件资源,以便并行创建 RDS 实例和 EC2 实例?还是我应该使用另一种模式?
这是一些代码位:
kubernetes - 你能在 Terraform 中使用 YAML 定义 Kubernetes 服务/Pods 吗?
我正在使用Kubernetes Provider来描述 Terraform 中的服务/pod。
使用 Hashicorp 配置语言定义kubernetes_pod或kubernetes_service资源可能会让人感到困惑,因为 Kubernetes 文档描述了 YAML 中的所有内容,这意味着您需要将其翻译成 HCL。
是否可以将 pod 定义为 YAML 并将它们与kubernetes_pod
资源一起kubernetes_service
用作模板?
windows - 如何从不同的文件夹运行 terraform init?
我想为 CI/CD 编写 terraform 脚本,我不喜欢在脚本中进行 CDing,我宁愿有特定的路径。
我试过了terraform init c:\my\folder\containing\tf-file
但是运行它会将 .terraform 文件夹放入我的 cwd 中。
amazon-web-services - 我可以让 terraform 保留旧版本的对象吗?
terraform 的新手,所以也许它不应该以这种方式工作。我想使用 aws_s3_bucket_object 将包上传到存储桶 - 这是应用程序部署的一部分。我将为每次部署更改包,我想保留旧版本。
但是在为将来的部署运行此程序后,我将要上传 version02,然后是 version03 等。Terraform用新的预期行为替换了旧的 zip。
但是有没有办法让 terraform 不破坏旧版本?这是这里受支持的用例,还是我不应该使用 terraform?如果 terraform 没有官方支持做我在这里尝试做的事情,我不想用丑陋的黑客来强迫它。
我当然可以只通过脚本调用 S3 api,但是如果用这个应用程序的 terraform 定义的其余部分来定义它会很棒。
amazon-web-services - 运行 `terraform plan` 或 `apply` 时如何显示任务定义模板内容?
我通过terraform部署ecs服务,通过template_file
数据源定义任务定义。
但是当我运行terraform plan
或terraform apply
更改任务定义模板后,它只显示我
但没有向我显示任务定义的最终内容。
那么有什么方法可以显示最新的任务定义(所有变量都替换为实际值)?
更新
似乎有人已经报告了这个问题。
https://github.com/terraform-providers/terraform-provider-template/issues/4
terraform - 如何在 Terraform 中创建存档文件?
我在 terraform 中有这段代码:
执行此操作时出现以下错误terraform plan
:
我正在使用 terraform 版本 v0.9.11
azure - 使用 Terraform azurerm_virtual_machine_extension 资源
我正在尝试在 Terraform 模板中使用azurerm_virtual_machine_extension资源,并试图了解“名称”参数应该是什么。文档说“虚拟机扩展对等的名称。更改它会强制创建新资源”但老实说,我不确定这意味着什么。