테라폼 Terraform 데이터 소스
# Terraform 데이터 소스
데이터 소스는 리소스의 데이터를 가져올수있다. 프로바이더는 리소스와 함께 데이터 소스를 제공 할 수 있다.
# 데이터 소스를 사용한 구성 파일
Amazon Linux2 HVM EBS x_86 최신버전 이미지 정보를 가져온다.
기존에는 변수를 통해 AMI 이미지 ID를 직접 제공했지만, 위에서 생성한 데이터 소스를 참조해 이미지를 지정한다.
이미지 변수가 필요없기 때문에 주석처리 해준다.
# 리소스 배포
# 리소스 확인
#웹 콘솔에서 확인
#리소스 삭제
devops@control:~/aws-example$ vi data_source.tf
devops@control:~/aws-example$ vi main.tf
devops@control:~/aws-example$ vi varible.tf
devops@control:~/aws-example$ terraform fmt
data_source.tf
devops@control:~/aws-example$ terraform validate
Success! The configuration is valid.
devops@control:~/aws-example$ terraform apply -auto-approve
devops@control:~/aws-example$ terraform show
devops@control:~/aws-example$ cat data_source.tf
data "aws_ami" "amazon_linux" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-ebs"]
}
}
devops@control:~/aws-example$ cat main.tf
resource "aws_instance" "my_instance" {
ami = data.aws_ami.amazon_linux.id
instance_type = var.instance_type
tags = local.common_tags
}
resource "aws_eip" "my_eip" {
vpc = true
instance = aws_instance.my_instance.id
}
devops@control:~/aws-example$ cat varible.tf
variable "aws_region" {
description = "AWS region"
type = string
default = "ap-northeast-1"
}
#variable "ami_image" {
# description = "Ubuntu 20.04 LTS Image"
# type = map(string)
# default = {
# ap-northeast-1 = "ami-09ff2b6ef00accc2e"
# ap-northeast-2 = "ami-0b329fb1f17558744"
# }
#}
variable "instance_type" {
description = "EC2 instance type"
type = string
default = "t3.micro"
}
variable "project_name" {
description = "Name of the project"
type = string
default = "my_project"
}
variable "environment" {
description = "Name of the environment"
type = string
default = "dev"
}
devops@control:~/aws-example$ terraform destroy