728x90
[Terraform] 데이터 소스(Data Source)
데이터 소스(Data Source)
공급자에서 가져온 읽기 전용 정보를 나타낸다.
데이터 공급자의 API만 물어보고 해당 데이터를 나머지 테라폼 코드에서 사용할 수 있게한다.
각 테라폼 공급자는 다양한 데이터 소스를 제공한다. (ex. VPC, 서브넷, AMI ID, IP 주소 범위 등)
데이터 소스 정의하기
데이터 소스를 공급자에서 가져오기 위해선, 먼저 데이터 소스를 선언을 해줘야한다.
data "aws-vpc" "default" {
default = true
}
output "default_vpc_id" {
value = data.aws_vpc.default.id
}
AMI 소스 가져오기
data "aws_ami" "amzLinux" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-gp2"]
}
}
위와같이 데이터소스를 선언해주면, amazon linux의 최신 ami 정보를 가져온다.
추가로 disk의 정보가 필요한 경우 filter를 통해 가져올 수 있다.
filter {
name = "root-device-type"
value = ["ebs"]
}
위와같이 데이터 소스를 선언해주면, 인스턴스를 생성하거나 런치템플릿을 생성할 때
변수로 지정할 필요없이 가져올 수 있다.
resource "aws_instance" "web" {
ami = data.aws_ami.amzLinux.id
instance_type = "t2.micro"
vpc_security_group_ids = [aws_security_group.web.id]
subnet_id = aws_subnet.subnet_a.id
key_name = aws_key_pair.tf-key.key_name
user_data = templatefile("userdata.tftpl", {
server_port = var.server_port
})
tags = {
Name = "tf-ec2"
}
}
반응형
'📚 IaC > Terraform' 카테고리의 다른 글
[Terraform] 의존성 관리 (depends_on) (0) | 2023.09.18 |
---|---|
[Terraform] RDS 생성 (0) | 2023.07.28 |
[Terraform] LoadBalancer 생성 (0) | 2023.07.04 |
[Terraform] Key-Pair 생성 후 EC2 인스턴스 SSH 접속 (0) | 2023.07.03 |
[Terraform] AWS Custom VPC 생성 (0) | 2023.06.28 |