Terraform配置文件:在变量内部使用变量

时间:2019-11-06 22:52:48

标签: terraform terraform-provider-aws

我正试图创建一个Terraform配置文件来创建一个ec2实例。我正在使用-J destination文件放置所有变量。它适用于大多数情况,但有两种情况我无法实现。非常感谢任何指针。

1.using变量用于aws实例名称。使用ssh -T user@server.example.com <<< "exit 42" echo $? # output: 42 ssh -T -J user@proxy.example.com user@server.example.com <<< "exit 42" echo $? # output: 0 不起作用。

variables.tf

post说明资源名称不能为变量。但是,这已经很老了。不知道是否仍然如此。

2。在另一个变量中使用变量。例如,我有这样定义的连接参数

var.service_name

这有效。我正在使用从AWS实例资源生成的IP。但是,如果我这样使用它。

"${service_name}"

我丢失了什么东西吗?

1 个答案:

答案 0 :(得分:0)

Terraform中的资源名称必须为常量。实际上,这通常不是问题,因为资源名称仅在给定模块内唯一,因此调用者不必自定义子模块中资源的名称。在特定资源是模块声明的主要对象的情况下,常见的习惯用法是将资源命名为“ main”,例如resource "aws_instance" "main"

在需要声明多个定义共享同一配置的实例的情况下,可以使用for_eachcount从同一资源块中产生多个实例。在这种情况下,资源地址包括一个附加的“索引”组件,例如aws_instance.example["foo"]aws_instance.example[0],其中 index 可以是变量,以动态选择生成的实例之一单个资源块。