[Terraform] 데이터 소스 (Data Source)DevOps/Terraform2022. 4. 25. 18:21
Table of Contents
728x90
✔️ 데이터 소스 (Data Source)
이미지의 버전 변경으로 인해 사용할 이미지를 교체하고 싶을 때는 이미지의 id를 변경해야 한다.
개발 환경 중 특히 test 환경에서는 최신 버전의 이미지로 자주 변경하기 때문에 매번 id를 바꾸는 것은 번거로운 일이다.
이때 데이터 소스를 사용하는데, 데이터 소스는 해당되는 프로바이더에서 정보를 가져오는 역할을 한다.
data "aws_ami" "example" {
executable_users = ["self"]
most_recent = true
name_regex = "^myami-\\d{3}"
owners = ["self"]
filter {
name = "name"
values = ["myami-*"]
}
filter {
name = "root-device-type"
values = ["ebs"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
}
data source로 가져온 정보는 attribute를 가지고 있다.
✔️ argument
- owners - (필수) 검색을 제한할 AMI 소유자 목록 최소 1개의 값을 지정해야 한다.
유효한 값: AWS 계정 ID, self(현재 계정) 또는 AWS 소유자 별칭(예: amazon, aws-marketplace, microsoft). - most_recent - (선택 사항) 둘 이상의 결과가 반환되는 경우 가장 최근의 AMI를 사용한다.
- execute_users - (선택 사항) 이미지에 대한 명시적 실행 권한이 있는 사용자로 검색을 제한한다.
유효한 항목은 숫자 계정 ID 또는 본인이다. - filter - (선택 사항) 필터링할 하나 이상의 이름/값 쌍이다. 몇 가지 유효한 키가 있다.
전체 참조는 AWS CLI 참조에서 describe-images를 확인 - name_regex - (선택 사항) AWS에서 반환한 AMI 목록에 적용할 정규식 문자열
이를 통해 AWS API에서 지원되지 않는 고급 필터링이 가능하다.
이 필터링은 AWS가 반환하는 항목에 대해 로컬로 수행되며 결과가 클 경우 성능에 영향을 미칠 수 있다.
AWS가 반환하는 목록의 범위를 좁히려면 이를 다른 옵션과 결합하는 것이 좋다.
다음 예제는 최신 버전의 이미지를 사용하도록 되어있는 코드이다.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
에서 이미지를 가져올 때는 다음과 같이 사용한다.
ami = data.aws_ami.ubuntu_image.id
ami = data.aws_ami.ubuntu_image.image_id
728x90
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] 독립적인 배포 환경 만들기 (0) | 2022.05.03 |
---|---|
[Terraform] 백엔드 (Backend) (0) | 2022.05.03 |
[Terraform] Count (0) | 2022.04.25 |
[Terraform] 모듈 (Module) (0) | 2022.04.23 |
[Terraform] 프로비저너 (Provisioner) (0) | 2022.04.22 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!