terraform.tfvars与variables.tf差异

terraform.tfvars与variables.tf差异,terraform,Terraform,我一直在研究这个问题,但找不到区别。variables.tf文件可以存储变量默认值/值,就像terraform.tfvars文件一样 这两者之间有什么区别,需要一个而不是另一个?我的理解是,如果您通过命令行将var文件作为terraform中的参数传入 关于这一点已经有了一个线程,唯一的好处似乎是将tfvars文件作为参数传递,因为您可以“潜在地”在variable.tf文件中分配变量 这是正确的想法吗?A变量。tf文件用于定义变量类型,并可以选择设置默认值 terraform.tfvars文件

我一直在研究这个问题,但找不到区别。variables.tf文件可以存储变量默认值/值,就像terraform.tfvars文件一样

这两者之间有什么区别,需要一个而不是另一个?我的理解是,如果您通过命令行将var文件作为terraform中的参数传入

关于这一点已经有了一个线程,唯一的好处似乎是将tfvars文件作为参数传递,因为您可以“潜在地”在variable.tf文件中分配变量


这是正确的想法吗?

A变量。tf文件用于定义变量类型,并可以选择设置默认值

terraform.tfvars文件用于设置变量的实际值

您可以为所有变量设置默认值,而不使用tfvars文件

实际上,在定义和值之间进行拆分的目的是允许定义公共基础结构设计,然后在每个环境中应用特定的值


使用您提供的多个tfvars文件作为参数,可以为每个环境设置不同的值:机密、VM大小、实例数等。

它们之间的区别在于声明和分配

variable
块(实际上可以出现在任何
.tf
文件中,但按照惯例都在
variables.tf
中)声明变量存在:

variable "example" {}
这告诉Terraform该模块接受一个名为
example
的输入变量。说明这一点后,可以在模块中的其他位置使用
var.example
来访问变量的值

有几种不同的方法可以为该输入变量赋值:

  • 地形平面图
    地形应用
    命令行上包括
    -var
    选项
  • 包括
    -var file
    选项以选择一个或多个
    .tfvars
    文件以同时设置多个变量的值
  • 创建
    terraform.tfvars
    文件或名为
    .auto.tfvars
    的文件,这些文件与
    -var file
    参数相同,但会自动加载
  • 对于子模块,在调用的
    模块
    块中包含一个表达式以分配给变量
可以选择使用默认值声明变量,这使其成为可选的。变量默认值用于存在良好默认行为的情况,该行为在大多数模块/配置使用中都能正常工作,同时在异常情况下仍允许覆盖该行为

分配变量值的各种方法用于处理差异。这意味着什么将取决于您使用Terraform的确切方式,但例如,如果您多次使用相同的配置来部署相同基础设施(环境等)的不同“副本”,那么您可能会选择为每个副本使用不同的
.tfvars
文件

由于
terraform.tfvars
.auto.tfvars
在没有任何附加选项的情况下自动加载,因此它们的行为类似于默认值,但目的不同。当运行terraform时,一些用户在运行terraform之前自动生成
terraform.tfvars
文件或
.auto.tfvars
,以便传入自动化知道的值,例如自动化运行的环境等


在处理子模块时,自动加载的
.tfvars
文件与变量默认值之间的区别更为明显
.tfvars
文件(和
-var
-var file
选项)仅适用于,而当该模块用作子模块时,变量默认值也适用,这意味着可以在中省略带有默认值的变量。

var.tf
变量.tf
之间的区别是什么?@JananathBanuka same