Sai Umesh

Getting Started with Terraform Part - 2

3 min read

This is Part - 2 of the series Getting Started with Terraform. We will check additional features from Terraform such as Locals and Output

Locals

locals is a block of code where we define expressions and assign them to a name, which can be used later. we can define more than one locals block. scope of locals block is restricted to the file in which it is written.

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "3.72.0"
    }
  }
}

locals {
  Environment = "Development"
  S3 = {
    bucket = "terraform-remote-state-test-bucket-example"
  }
}

locals {
  default_tags = {
    Environment = local.Environment
  }
}

# Configure the AWS Provider
provider "aws" {
  region = "us-east-1"
}

resource "aws_s3_bucket" "bucket" {
  bucket = local.S3.bucket
  tags   = local.default_tags
}

Click here see the code difference from the previous section to this.

Output

outputs.tf file prints the metadata like arn, id and, etc of the resources you created. let’s look at the syntax

output name_of_the_output {
  value       = "<resource_or_module>"
  sensitive   = true
  description = "description"
}

let’s create outputs.tf file with following content.

output "bucket_domain" {
  value = aws_s3_bucket.bucket.bucket_domain_name
}

Run following commands to create an S3 bucket

terraform init
terraform plan
terraform apply

Once you apply, you can observe we have the Outputs section with bucket_domain with the respective value.

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

bucket_domain = "terraform-remote-state-test-bucket-example.s3.amazonaws.com"

Go to the AWS console to confirm if the S3 bucket has been created

Untitled


Sai Umesh

I’m Sai Umesh, a software engineer based in India. Working as a DevOps engineer.