我一直在研究,但找不到区别。variables.tf文件可以存储变量默认值/值,例如terraform.tfvars文件。
两者之间的区别是什么?我的理解是,是否通过命令行将var文件作为terraform中的参数传递。
已经有一个关于此的线程,唯一的好处似乎是将tfvars文件作为参数传递,因为您可以“潜在地”对variable.tf文件中的变量进行赋值。
这是正确的想法吗?
这些之间的区别是声明与赋值。
variable块(实际上可以出现在任何.tf文件中,但按照variables.tf惯例在其中)声明存在变量:
variable "example" {}
Run Code Online (Sandbox Code Playgroud)
这告诉Terraform该模块接受名为的输入变量example。声明这一点使得使用var.example模块中的其他位置访问变量的值有效。
有几种不同的方法可以为此输入变量分配值:
-var在terraform plan或terraform apply命令行上包括选项。-var-file用于选择一个或多个.tfvars文件以一次为多个变量设置值的选项。terraform.tfvars或多个名为的文件.auto.tfvars,它们与-var-file参数相同,但会自动加载。module块内的变量。可以选择使用默认值声明变量,这使其成为可选值。可变默认值用于存在良好的默认行为的情况,该行为对于模块/配置的大多数使用都适用,而在特殊情况下仍允许该行为被覆盖。
分配变量值的各种方法是为了处理差异。这意味着什么将完全取决于您使用Terraform的方式,但是例如,如果您多次使用相同的配置来部署相同基础结构(环境等)的不同“副本”,那么您可能会选择使用不同的.tfvars文件每个副本。
由于terraform.tfvars和.auto.tfvars会自动加载而没有任何其他选项,因此它们的行为与默认值相似,但是它们的目的不同。当自动化运行Terraform,一些用户有自己的自动化生成一个terraform.tfvars文件,或.auto.tfvars只是为了在价值观自动化知道,如自动化运行什么样的环境,等等。通过运行Terraform前
.tfvars在处理子模块时,自动加载的文件和变量默认值之间的区别更加明显。.tfvars文件(和-var,-var-file选项)仅适用于根模块变量,而当该模块被用作子模块太,这意味着使用默认值可以被省略的变量变量默认应用module块。
小智 5
甲variables.tf文件用于定义变量类型和任选设置的默认值。
一个terraform.tfvars文件用于设置实际值的变量。
您可以为所有变量设置默认值,而根本不使用tfvars文件。
实际上,在定义和值之间进行划分的目的是允许定义通用的基础结构设计,然后在每个环境中应用特定的值。
使用您提供的多个tfvars文件作为参数,可以为每个环境设置不同的值:机密,VM大小,实例数等。
| 归档时间: |
|
| 查看次数: |
3257 次 |
| 最近记录: |