Providers AKA Data Sources at Terraform

There are some data sources that give some important information about underlying infrastructure like which region/zone we are working on aws.

data keyword is used to depict data sources

provider "aws" {}

data "aws_region" "current" {}

output "region_name" {
  value = data.aws_region.current.name
}

output "region_description" {
  value = data.aws_region.current.description
}

Get aws account id, arn, user_id

provider "aws" {}

data "aws_caller_identity" "current" {}

output "account_id" {
  value = data.aws_caller_identity.current.account_id
}

output "caller_arn" {
  value = data.aws_caller_identity.current.arn
}

output "user_id" {
  value = data.aws_caller_identity.current.user_id
}



Print all vpc’s id

data "aws_vpcs" "vpcs" {}

output "all_vpc_ids" {
  value = data.aws_vpcs.vpcs.ids
}

Vpc’s with SANDBOX tag name

data "aws_vpc" "sandbox" {
  tags = {
    Name = "SANDBOX"
  }
}

Create subnet with availability zones and sandbox vpc id

data "aws_availability_zones" "working" {}

data "aws_vpc" "sandbox" {
  tags = {
    Name = "SANDBOX"
  }
}

resource "aws_subnet" "subnet1" {
  vpc_id            = data.aws_vpc.sandbox.id
  availability_zone = data.aws_availability_zones.working.names[0]
  cidr_block        = "10.0.1.0/24"

  tags = {
    Name = "Subnet-1"
    Info = "AZ: ${data.aws_availability_zones.working.names[0]} in Region: ${data.aws_region.current.description}"
  }
}

resource "aws_subnet" "subnet2" {
  vpc_id            = data.aws_vpc.sandbox.id
  availability_zone = data.aws_availability_zones.working.names[1]
  cidr_block        = "10.0.2.0/24"

  tags = {
    Name = "Subnet-2"
    Info = "AZ: ${data.aws_availability_zones.working.names[1]} in Region: ${data.aws_region.current.description}"
  }
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir