variables.tf
和terraform.tfvars
有什么区别?两者都可以为变量定义(分配值),对吗?这两个变量定义的范围或行为是否有差异?至于给变量赋值,可以用一个代替另一个吗?
答案 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 plan
或terraform apply
时,需要设置所有变量。您可以将它们设置为实际的代码,例如name = "test"
,在执行时根据提示将它们输入到控制台中,或者通过运行terraform apply -var-file terraform.tfvars
将它们传递给命令。
tfvars
文件包含分配,并且在多个环境中都可以使用。通过将此文件传递到命令中,您可以将值分配给相应的变量。例如,您可以使用它来分配区域,帐户ID等。如果这些文件包含敏感凭据,请确保对其进行.gitignore
并将其存储在单独的凭据处理程序中。