Input Variable – without default value
variable "image_id" { type = string }
Input Variable – with default value
variable "availability_zone_names" { type = list(string) default = ["us-west-1a"] }
Using -var
The most basic way of providing single variable override for a terraform apply command using the -var option
terraform apply -var region=”us-east-1” -var stage=”production” -var instance_type=”t3.large”
In pipeline, we can use some environment variables, which looks more professional
terraform apply -var region=”$MY_REGION” -var stage=”$MY_STAGE” -var instance_type=”$MY_INSTANCE_TYPE”
Using TF_VAR
Terraform will check environment variable has prefixed with TF_VAR_ and use it as an input variable. So, if we define an environment variable called TF_VAR_region, then Terraform will use its value as variable named region.
Using tfvars files
Create a file named example.tfvars
instance_type = “t3.medium”
And then run
terraform apply -var-file=example.tfvars
Multiple var file adding
terraform apply -var-file=”us.tfvars” -var-file “large.tfvars”
What is the difference between variable TF and variable Tfvars?
Variables.tf is where you declare your variables, while terraform.tfvars is where you assign values to those variables, tfvars will override the variables.tf, but we will explain precedence later in this article.
Terraform loads variables in the following order, with later sources taking precedence over earlier ones:
- Environment variables
- The
terraform.tfvars
file, if present. - The
terraform.tfvars.json
file, if present. - Any
*.auto.tfvars
or*.auto.tfvars.json
files, processed in lexical order of their filenames. - Any
-var
and-var-file
options on the command line, in the order they are provided. (This includes variables set by a Terraform Cloud workspace.)