在执行plan/apply时指定Terraform变量的值的方法

在使用Terraform定义变量时,一般情况下也会将变量值一起定义,如下所示。

variable "instance_type" {
  type    = string
  default = "t2.micro"
}

有时候出于某种原因,我们不希望定义一个固定的值,而是希望从外部进行指定以增加灵活性。本文将介绍这种方法。

前提:先定义变量,并将其值设为空。

variable instance_type {}

通过下面介绍的方法,可以指定变量的值(内容),但变量的定义本身是必要的,因此需要事先定义它。

选项1:使用CLI以交互式方式输入

当输入plan/apply时,可以以对话形式进行输入,示例如下。

terraform plan 
var.instance_type
  Enter a value:(ここに入力)

选项2: 使用-var标志指定

在执行计划/应用程序时,通过指定-var “变量名=值”来设置。

terraform plan -var "instance_type=t2.micro"

如果想要指定多个变量的话,可以增加 “-var” 后面的 “变量名=值” 的定义。

terraform plan -var "instance_type=t2.micro" -var "instance_count=2"

第三种方法:利用环境变量

如果您在环境变量中添加一个名为TF_VAR_的前缀来定义,它将在计划/应用时被读取。

export TF_VAR_instance_type="t2.micro"
terraform plan

选项1: 方法4: 在文件中定义

准备一个名为 .tfvars 的文件,并在里面定义数值。
我认为这在实践中是经常使用的方法。

instance_type="t2.micro"

只要文件名属于以下四种类型之一,就会自动加载。

    • terraform.tfvars

 

    • terraform.tfvars.json

 

    • *.auto.tfvars

 

    *.auto.tfvars.json

如果想要使用除上述之外的文件名进行定义,则可以使用-var-file标志进行指定。

读取数值的顺序 = 优先级

这里介绍了值的定义方法有读取顺序(应用顺序),后来读取的值会被采用。

    1. 环境变量(= 优先级最低)

 

    1. terraform.tfvars

 

    1. terraform.tfvars.json

 

    1. 4. *.auto.tfvars, *.auto.tfvars.json

 

    -var, -var-file 标记在执行时提供的内容(= 优先级最高)

顺便提一下,设定变量时的值具有最低的优先级,环境变量具有更高的优先级。

请参考

 

广告
将在 10 秒后关闭
bannerAds