【发布时间】: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