variables.tf和terraform.tfvars有什么区别?

时间:2019-05-02 19:42:56

标签: terraform

variables.tfterraform.tfvars有什么区别?两者都可以为变量定义(分配值),对吗?这两个变量定义的范围或行为是否有差异?至于给变量赋值,可以用一个代替另一个吗?

2 个答案:

答案 0 :(得分:1)

  • variables.tf-在这里,您定义的变量必须具有值,才能使Terraform代码得以验证和运行。您也可以在此文件中为变量定义默认值。请注意,您不需要在名为variables.tf的文件中定义所有变量-可以在任何位置定义它们,但是出于组织目的,鼓励这种做法。

  • terraform.tfvars-此文件包含一个或多个variablename = variablevalue对。 Terraform加载该文件时,它将在Terraform中查找名称为variablename的任何变量,并将其值设置为variablevalue。您无法在此处定义新变量,只能设置variables.tf中定义的现有变量的值。

答案 1 :(得分:1)

您可以在variables.tf中创建并可能分配值。通常的用例是您有一个模块,需要在其中分配资源name。然后,您也可以创建一个名为name的变量。因此,在您的定义中,您可以进行分配:

name = "${var.name}"

运行terraform planterraform apply时,需要设置所有变量。您可以将它们设置为实际的代码,例如name = "test",在执行时根据提示将它们输入到控制台中,或者通过运行terraform apply -var-file terraform.tfvars将它们传递给命令。

tfvars文件包含分配,并且在多个环境中都可以使用。通过将此文件传递到命令中,您可以将值分配给相应的变量。例如,您可以使用它来分配区域,帐户ID等。如果这些文件包含敏感凭据,请确保对其进行.gitignore并将其存储在单独的凭据处理程序中。