https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance
우선 위 공식문서를 기반으로 aws ec2인스턴스를 테라폼으로 생성하고 이미지를 Data Resource으로 받아와서 생성해 보는 작업까지 해보겠습니다.
/main.tf
provider "aws" {
region = "ap-northeast-2"
}
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
owners = ["099720109477"] # Canonical
}
resource "aws_instance" "ubuntu" {
ami = data.aws_ami.ubuntu.image_id
instance_type = "t2.micro"
tags = {
Name = "fastcampus-ubuntu-terraform"
}
}
$ terraform init
우선 provider를 통해 aws의 region을 설정해 주었습니다. ( ap-northeast-2 ) 그리고 Resource를 통해 인프라를 생성할 건데, aws_instance의 이름을 ubuntu로 설정해 주었습니다. 그 안에 inner block으로 tag를 주어 이름을 설정해 주었고, ami는 바로 다음에 data block을 설명할 떄 자세히 말씀드리겠습니다. 그리고 instance_type은 프리티어를 사용해야 하므로 t2-micro를 적어주었습니다.
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ami#image_id
그 다음으로 data Resource입니다. 제가 작성한 코드는 예제에 있는 코드 그대로 입니다. filter를 통해서 많은 ami이미지들을 거르고 걸러서 그 중 가장 최신것을 선택하도록 했습니다. 여기서 owners는 만든 회사의 코드입니다 (Cannoical)그리고, 가상화타입, 이름을 필터링 했습니다.
다시 Resource로 돌아와서 ami에 data.aws_ami.ubuntu.image_id를 적어줍니다.
- image_id - The ID of the AMI. Should be the same as the resource id.
이렇게 공식문서에 명시되어 있습니다. AMI의 id를 가져온다고 보시면 됩니다. 그리고 이 AMI이미지를 토대로 AWS EC2인스턴스를 만드는 것입니다.
다음과 같이 잘 생성되었습니다.
그리고 바로 인스턴스를 destroy명령어를 통해 삭제해 주도록 하겠습니다.
$ terraform destroy
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL module (0) | 2022.07.21 |
---|---|
[ DevOps ] - (VPC) VPC를 구성하는 기본 원리 ( 복습 ) (0) | 2022.07.21 |
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 HCL 기초 문법 (0) | 2022.07.21 |
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 다루어보기 (0) | 2022.07.21 |
[ DevOps ] - (테라폼을 이용한 인프라 관리) 테라폼 소개 (0) | 2022.07.21 |