클라우드/테라폼(Terraform)

테라폼 Terraform 데이터 소스

두뚜 2021. 8. 5. 16:42

# 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