gpt4 book ai didi

terraform.tfvars 与 variables.tf 的区别

转载 作者:行者123 更新时间:2023-12-04 09:38:40 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What is the difference between variables.tf and terraform.tfvars?

(2 个回答)


2年前关闭。




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

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

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

这是正确的想法吗?

最佳答案

它们之间的区别在于声明与赋值。
variable block (实际上可以出现在任何 .tf 文件中,但按照约定位于 variables.tf 中)声明变量存在:

variable "example" {}

这告诉 Terraform 该模块接受一个名为 example 的输入变量。说明这一点使得在模块的其他地方使用 var.example 来访问变量的值是有效的。

有几种不同的方法可以给这个输入变量赋值:
  • -varterraform plan 命令行中包含 terraform apply 选项。
  • 包括 -var-file 选项以选择一个或多个 .tfvars 文件以一次设置多个变量的值。
  • 创建一个 terraform.tfvars 文件,或名为 .auto.tfvars 的文件,它们的处理方式与 -var-file 参数相同,但会自动加载。
  • 对于子模块,包括一个表达式以分配给调用 module block 内的变量。

  • 可以选择使用默认值声明变量,这使其成为可选的。可变默认值用于存在良好默认行为的情况,该行为适用于模块/配置的大多数用途,同时仍允许在特殊情况下覆盖该行为。

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

    因为 terraform.tfvars.auto.tfvars 是在没有任何附加选项的情况下自动加载的,所以它们的行为类似于默认值,但它们的意图不同。当 running Terraform in automation 时,一些用户在运行 Terraform 之前让他们的自动化生成一个 terraform.tfvars 文件或 .auto.tfvars 以传递自动化知道的值,例如自动化运行的环境等。

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

    关于terraform.tfvars 与 variables.tf 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56086286/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com