Terraform模块:变量的正确引用?

时间:2019-05-29 10:41:18

标签: terraform terraform-provider-aws

我正在编写一个Terraform脚本来创建带有其工作节点在AWS上的EKS集群。第一次这样做,让我有些困惑。 这是文件夹的组织:

├─── Int AWS Account
│   ├─── variables.tf
│   ├─── eks-cluster.tf (refers the modules)
│   ├─── others
│
├─── Prod AWS Account
│   ├─── (will be the same than Int with different settings in variables)
│
├─── ReadMe.md
│
├─── data sources
│
├─── Modules
│   ├─── cluster.tf
│   ├─── worker-nodes.tf
│   ├─── worker-nodes-sg.tf 

对于如何使用和传递变量,我有些困惑。现在,我正在做的是在eks-cluster.tf中的模块文件夹中引用$ {var.name},或者直接输入name = blabla(主要是避免使用),或者引用再次更改该变量,并在帐户文件夹中包含一个变量文件。

对吗?

1 个答案:

答案 0 :(得分:0)

我不确定我能否正确回答您的问题,但总的来说,您将只希望将模块文件保留为变量,因为模块是通用的,因此您可以轻松地将它们包含在不同的环境中。

eks_cluster_int.tfeks_cluster_prod.tf中包含模块时,您将传递模块本身中定义的所有变量的值。这样,您可以在同一模块中使用特定于环境的值。

module "cluster" {
  source = "..."

  var1 = value1    # directly passing value
  var2 = ${var.int_specific_var}  # can be defined in variables.tf of environment
  ...
}

这能回答您的问题吗?