오늘은 Terraform에 대해서 공부해봤는데요.
기존에 업무 환경에서는 한번도 사용해본적이 없었던 기술이라 빠르게 학습하기 위해서 알아봤습니다.
Terrafrom은 인프라를 코드로 관리할 수 있는 도구이다. (IaC = Infrastructure as code)
선언적으로 클라우드에 대한 인프라를 정의하고 관리할 수 있다.
low-level 컴포넌트들인 computer instance, storage, network 부터 high-level 컴포넌트들인 DNS, SaaS 등 다양하게 가능하다.
예를들어 AWS에 배포되는 다양한 인프라와 리소스들을 쉽게 관리하고 자동화 할 수 있다.
Terraform은 3가지 workflow로 동작하게 된다.
실제 예시를 통해서 빠르게 알아보자.
Terraform 공식 문서에서 제공하는 Quick Start 이다.
Mac 환경에서 설치하였다.
# homebrew를 이용한 설치
$ brew tap hashicorp/tap
$ brew install hashicorp/tap/terraform
# 설치 확인
$ terraform -help
로컬 환경에 도커를 이용해 nginx를 terraform을 이용해 구축해보자.
main.tf 를 이용해 Terraform configuration 을 작성하자.
$ cd workspace
$ code main.tf
실제 main.tf 내용이다.
아래 providers, Resources 를 정의했다.
(이 밖에 State, Modules 도 있다.)
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0.1"
}
}
}
provider "docker" {}
resource "docker_image" "nginx" {
name = "nginx"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.image_id
name = "tutorial"
ports {
internal = 80
external = 8000
}
}
위와 같이 작성 후 Terraform 명령어를 통해 구축이 가능하다.
$ cd workspace
# 디렉토리에서 Terraform 을 초기화 한다. 필요한 프로바이더를 다운로드 하거나 환경을 설정한다
$ terraform init
# 어떤 리소스가 생성 될지 미리 보여준다
$ terraform plan
# 실제 리소스를 생성하게 된다.
$ terraform apply
# 모든 작업이 끝난 후 리소스를 삭제한다
$ terraform destroy
아래는 workspace에서 terraform apply 명령어로 실제 리소스를 생성하는 작업이다.
리소스 생성 후 Docker를 확인해보면 nginx 가 바로 배포되어있다.
이렇게 코드를 이용해 빠르게 구축가능한 Terrafrom이다.
더 많은 옵션과 기능이 있겠지만 하나하나 살펴보려고 한다.