IaC/Terraform

[Terraform] 데이터 소스(Data Source)

nayoungs 2022. 4. 26. 02:04
728x90

 

 

Data Source: aws_ami

 

프로바이더에서 정보를 가져오는 것을 모두 데이터 소스라한다.

data 블록에 작성하며, 리소스와 정의하는 방법은 동일하다. 

 

  • owner 필수(required)
  • 필터(filter)를 걸어서 검색

 

다음과 같이 Data Sources를 확인할 수 있다.

참고) ubuntu image 검색 사이트

 

 

💻 실습: aws_ami data source로 ami 생성하기

 

📝 data_source.tf

data "aws_ami" "ubuntu_image" {
  owners      = ["099720109477"]
  most_recent = true #가장 최신 버전을 사용할 것인가

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-*-amd64-server-*"]
  }

  filter {
    name   = "root-device-type"
    values = ["ebs"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

📝 main.tf

resource "aws_instance" "app_server" {
  count = var.instance_count
  #aws_instance.app_server[0]
  #aws_instance.app_server[1]

 ami           = data.aws_ami.ubuntu_image.id #이미지
  instance_type = "t3.small"
 
  vpc_security_group_ids = [aws_security_group.app_server_sg.id]
  key_name               = aws_key_pair.app_server_key.key_name
  subnet_id              = module.app_vpc.public_subnets[count.index % length(module.app_vpc.public_subnets)]


  tags = local.common_tags
}

AMI 생성 확인

 

 

 

728x90