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

Terraform 地形模块:变量的正确引用?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我正在编写一个terraform脚本来创建一个EKS集群,其工作节点位于AWS上。第一次这样做,我有点困惑。 以下是文件夹组织: ├─── Int AWS Account │ ├─── variables.tf │ ├─── eks-cluster.tf (refers the modules) │ ├─── others │ ├─── Prod AWS Account │ ├─── (will be the same than Int with different settin

我正在编写一个terraform脚本来创建一个EKS集群,其工作节点位于AWS上。第一次这样做,我有点困惑。 以下是文件夹组织:

├─── 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 
关于如何使用和传递变量,我有点困惑。现在,我正在做的是,我在模块文件夹中引用${var.name},在eks-cluster.tf中,我要么放一个直接值name=blablabla(主要是避免它),要么再次引用变量,并在account文件夹中有一个变量文件


是否正确?

我不确定是否正确理解了您的问题,但一般来说,您希望只保留带有变量的模块文件,因为模块是通用的,因此您可以轻松地将它们包含在不同的环境中

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

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

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

这回答了你的问题吗?

太好了,很高兴它能帮上忙!