In Terraform, the widely accepted and recommended naming convention for variables is snake_case
, which means:
- All letters are lowercase.
- Words are separated by underscores.
- Names should be descriptive and indicate the variable’s purpose or usage.
Following this convention ensures consistency, readability, and easier collaboration, especially in a team environment.
Here are some guidelines and examples:
Guidelines:
- Descriptive Names: The variable name should clearly indicate its purpose. It’s often better to have a slightly longer, descriptive name than a short, cryptic one.Good:
database_instance_size
Bad:db_sz
- Avoid Redundancy: If the context of a variable is clear, avoid using redundant prefixes or suffixes.Good:
instance_count
Bad:ec2_instance_count
(if it’s clear that you’re working with EC2 resources) - Plural Names for Lists/Sets: If a variable is expected to be a list or a set, use a plural name.Good:
security_group_ids
- No Uppercase or CamelCase: Stick to lowercase letters and avoid using uppercase or CamelCase.Bad:
InstanceSize
,instanceSize
Terraform variable names are not case-sensitive, but it is generally considered best practice to use snake case, with all words separated by underscores. This is the most common naming convention used in Terraform, and it is also consistent with the Terraform configuration language itself.
Here are some examples of good Terraform variable names:
my_variable
vpc_id
instance_type
key_name
security_groups
You should also avoid using reserved words, single letters, and special characters in your variable names. It is also a good idea to use descriptive names that are easy to understand.
Here are some tips for naming Terraform variables:
- Use all lowercase letters.
- Use underscores to separate words.
- Avoid using special characters.
- Use descriptive names that are easy to understand.
- Avoid using reserved words.
- Avoid using single letters.
- Use abbreviations for common terms.
- Use prefixes to indicate the type of variable. For example, you could use the prefix
account_
for variables that are related to AWS accounts.
# Good variable names | |
variable "instance_type" { | |
description = "EC2 instance type" | |
type = string | |
default = "t2.micro" | |
} | |
variable "security_group_ids" { | |
description = "List of security group IDs" | |
type = list(string) | |
default = [] | |
} | |
variable "database_username" { | |
description = "Username for the database" | |
type = string | |
} | |
# Bad variable names | |
variable "dbUsr" { | |
description = "Username for the database" | |
type = string | |
} | |
variable "sgID" { | |
description = "Security group ID" | |
type = string | |
} | |
# Here are some additional examples of good Terraform variable names: | |
variable "account_id" { | |
type = string | |
} | |
variable "vpc_id" { | |
type = string | |
description = "The ID of the VPC in the ${var.account_name} account." | |
} | |
variable "instance_type" { | |
type = string | |
description = "The type of instance to launch in the ${var.account_name} account." | |
} | |
variable "key_name" { | |
type = string | |
description = "The name of the SSH key pair to use for SSH access to the instances." | |
} | |
variable "security_groups" { | |
type = list(string) | |
description = "A list of security group IDs to associate with the instances." | |
} |
I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND