【问题标题】:terraform module structure and tfvars filesterraform 模块结构和 tfvars 文件
【发布时间】:2021-09-10 09:53:44
【问题描述】:

我有一个使用模块的配置,这是它的结构:

main.tf
       \modules
               \kubernetes_cluster
                                  \main.tf
                                  \variables.tf

在这个阶段,我没有单独的 tfvars 文件,我依赖于 variables.tf 文件中声明的默认值,这很好用。然后我决定创建一个 tfvars 文件,结果是:

main.tf
       \modules
               \kubernetes_cluster
                                  \main.tf
                                  \variables.tf
                                  \variables.tfvars

同时我从变量文件中删除了默认值,然后当我运行时:

terraform apply -target=module.kubernetes_cluster -auto-approve

我收到错误,抱怨我需要将变量作为参数传递,因为“它们丢失了”,所以我搬到了这个:

main.tf
variables.tf
variables.tfvars
                \modules
                \kubernetes_cluster
                                   \main.tf
                                   \variables.tf

这是根模块中的 main.tf 的样子:

module "kubernetes_cluster" {
  source  = "./modules/kubernetes_cluster"
  kubernetes_version  = var.kubernetes_version
  node_hosts          = var.node_hosts
}

当我运行 terraform apply 时,系统会提示我输入变量的值。我想做的就是不依赖变量默认值,并且能够从根模块目录运行 terraform apply 而不必手动传递变量值,我怀疑我的模块结构沿线某处不正确。

【问题讨论】:

  • 如果您不想使用默认值,那么实际值应该来自哪里?
  • 我认为 tfvars 文件的整个想法是它们是从那里获取的?
  • 如果我添加 -var-file = . . .一切正常
  • 是的。您必须明确使用-var-file
  • 看来问题是我对 tfvars 文件如何工作的理解不正确

标签: terraform


【解决方案1】:

如果你想让TF加载tfvars自动,文件must be calledterraform.tfvars,而不是variables.tfvars。还有其他可能性:

Terraform 还会自动加载一些变量定义文件(如果存在):

完全命名为 terraform.tfvarsterraform.tfvars.json 的文件。

名称以.auto.tfvars.auto.tfvars.json 结尾的任何文件。

【讨论】:

    猜你喜欢
    • 2019-01-21
    • 2018-11-17
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2018-03-21
    • 2019-04-24
    • 2021-11-18
    • 2019-02-01
    相关资源
    最近更新 更多