CloudNet@ 팀의 가시다님께서 Leading 하시는 Terraform T101 Study 내용 요약
해당 Terraform Study 는 Terraform Up and Running 책을 기반으로 진행 중입니다.
1. EC2 Instance 배포
EC2 Instance는 AWS에서 사용하는 기본적인 IaaS 서비스입니다.
편의를 위해 Default VPC를 사용할 예정이므로, Default VPC가 없다면 실습 전 생성해 줍니다.
1.1. Main.tf 작성
main.tf 파일 생성 후 아래의 내용을 넣고 실행해봅니다.
// main.tf
// provider 를 통해 aws를 사용할 것임을 선언
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
// ami 는 aws에서 사용하는 서버 이미지
ami = "ami-0c76973fbe0ee100c"
// instance type은 해당 서버의 성능을 나타낸다.
instance_type = "t2.micro"
}
1.2. Terraform 실행
아래의 명령어를 통해 Terraform 을 실행해봅니다.
terraform init && terraform plan && terraform apply -auto-approve
문제없이 배포가 되었다면 아래와 같은 화면이 보일 것입니다.
실제로도 잘 배포가 되었을지 콘솔에서 확인해봅니다.
EC2 Instance가 잘 실행되고 있는 것을 확인했습니다.
이제 다시 Terraform 명령어를 사용해서 배포한 EC2를 삭제해봅니다.
terrafrom destroy -auto-approve
문제없이 수행되었다면 마찬가지로 아래와 같은 화면이 보일 것입니다.
굉장히 간단하게 AWS EC2 서버를 배포하고 삭제했습니다.
그럼 방금 진행한 일련의 과정 속에 어떠한 일들이 있었는 지 하나씩 자세하게 살펴보겠습니다.
2. Terraform 파헤치기
2.1. tf 파일
.tf 는 Terraform 에서 사용하는 확장자명
Terraform은 HashiCorp 사에서 Go 언어를 기반으로 개발한 오픈소스 프로비저닝 도구라고 앞서 설명하였습니다.
Terraform은 HCL 이라고 하는 언어로 동작하게 되는데, 이 때 HCL 이 동작할 수 있는 파일이 바로 .tf 확장자가 붙은 파일입니다.
Ex) Python > .py 파일 , JavaScript > .js 파일 , Terraform > .tf 파일 !!
그래서 처음에 main.tf 파일을 만들어서 terraform 을 실행시켜 주었습니다.
그렇다면 main.tf 안의 내용은 어떻게 구성했던 것일까요??
2.2. Terraform Resource
provider 는 어떤 클라우드 리소스 공급자를 사용할 것인 지 정하는 것입니다. (AWS, GCP 등)
// main.tf
resource "aws_instance" "example" {
// ami 는 aws에서 사용하는 서버 이미지
ami = "ami-0c76973fbe0ee100c"
// instance type은 해당 서버의 성능을 나타낸다.
instance_type = "t2.micro"
}
위 리소스는 아래와 같이 해석할 수 있습니다.
AWS 라는 Provider가 제공하는,
Instance 라는 Resource Type을 생성하겠다.
여기서 생성하는 AWS_Instance 에는 Example 이라는 이름을 부여할 것이다. 해당 이름은 마음대로 지정해줘도 되지만 생성할 리소스가 어떤 리소스인지 구분될 수 있는 이름을 부여해주는 것이 좋습니다.
Example 이라는 Instance는 "ami-0c76973fbe0ee100c" 라는 ami 를 이용해 생성할 것이며, "t2.micro" 유형으로 생성할 것이다.
실제로는 이 외에도 굉장히 많은 config 가 필요할 것이므로 아래 문서에서 지원하는 Config 유형을 확인해보는 것이 좋습니다.