Document

SUBSCRIBE TO GET FULL ACCESS TO THE E-BOOKS FOR FREE 🎁SUBSCRIBE NOW

Professional Dropdown with Icon

SUBSCRIBE NOW TO GET FREE ACCESS TO EBOOKS

Terraform- Variables

 

 Terraform supports different type of variables

  • Strings
  • Maps
  • Lists
  • Boolean

Strings

Example – single line

provider "aws"{
profile = "rprofile"
region = "ap-south-1"
}

variable "firststring" {
type = string
default = "this is my first string"
}

output "myfirstoutput" {
value = "${var.firststring}"
}

Example – multiline

provider "aws" {
profile = "rprofile"
region = "ap-south-1"
}
variable "multiline" {
type = string
default = <<EOT
            1
            2
            EOT

}

output "outputvar"{
 value = "${var.multiline}"
}

Numbers

Example

provider "aws"{
profile = rprofile
region = "ap-south-1"
}

variable "pie"{
type = number
default = 3.14
}

output "output1"{
value = "${var.pie}"
}

Bool

Example

provider "aws" {
profile="rprofile"
region="ap-south-1"
}
variable "IsiTTrue" {
type=bool
default=true
}
output "result" {
value= "${var.IsiTTrue}"
}

Null

The null value is represented by the unquoted symbol null.

Lists/Tuples

Lists/tuples are represented by a pair of square brackets containing a comma-separated sequence of values, like [“a”, 15, true].

List literals can be split into multiple lines for readability, but always require a comma between values.

Example 1

provider "aws" {
profile="rprofile"
region="ap-south-1"
}
variable "regions" {
type = list
default=["a","2","c"]

}

output "result" {
value="${var.regions}"
}

Example 2

provider "aws" {
profile="rprofile"
region="ap-south-1"
}
variable "regions" {
type = list
default=["a","2","c"]

}

output "result" {
value="${var.regions[0]}"
}

Map/Objects

Maps are a collection of string keys and string values.

Example

provider "aws" {
profile="rprofile"
region="ap-south-1"
}
variable "regions" {
type = map
default={
   region1= "mumbai"
   number1=1

}

}

output "result" {
value="${var.regions}"
}

Example2

provider "aws" {
profile="rprofile"
region="ap-south-1"
}
variable "regions" {
type = map
default={
   region1= "mumbai"
   number1=1

}

}

output "result" {
value="${var.regions["region1"]}"
}

Input Output variables

Example :- input the value from user and display it

provider "aws" {
profile="rprofile"
region="ap-south-1"
}
variable "myinput" {
type=string
}
output "result" {
value="${var.myinput}"
}

Example

variables (variable.tf)

variable "region" {
   description = "Mumbai region"
   type        = string
   default     = "ap-south-1"
}
variable "keyname" {
type=string
default="devops"
}
variable "instance_type" {
type=string
default="t2.micro"
}

variable "name" {
type=string
default="Test"
}

main.tf

provider "aws"{
profile="rprofile"
region= var.region
}
resource "aws_instance" "myFirstInstance" {
  ami           = "ami-04bde106886a53080"
  key_name = var.keyname
  instance_type = var.instance_type
  tags= {
    Name = var.name
  }
}

Example 2

variable.tf but without any default values

variable "instance_type" {
}

create terraform.tfvars

instance_type=”t2.micro”

main.tf

resource "aws_instance" "myFirstInstance" {
  ami           = "ami-04bde106886a53080"
  key_name = "devops"
  instance_type = var.instance_type
  tags= {
    Name = "test"
  }
}

Example 3 Terraform multiple tfvars file

variable.tf

variable "instance_type" {
}

variable "environment_name" {
}

stag.tfvars

instance_type="t2.micro"

environment_name ="stage"

main.tf

provider "aws"{
profile="rprofile"
region= "ap-south-1"
}
resource "aws_instance" "myFirstInstance" {
  ami           = "ami-04bde106886a53080"
  key_name = "devops"
  instance_type = var.instance_type
  tags= {
    Name = var.environment_name
  }
}

terraform apply -var-file=”stag.tfvars”

Share your love

Leave a Reply

Your email address will not be published. Required fields are marked *