본문 바로가기

DevOps/Terraform

[Infra] Terraform

Infrastructure as Code

IaC

코드로써 인프라를 얘기

인프라를 이루는 서버, 미들웨어, 서비스 등의 인프라 구성 요소들을 코드를 통해 구축하는 것

코드로서의 장점을 다 가지고 있음 -> 작성하는 게 빨라짐, 작성용이성, 재사용성, 유지보수 등의 장점

 

Terraform

가장 많이 쓰이는 IaC 도구

Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently

테라폼은 인프라를 효율적으로 만들고, 변경하고, 기록하고, 버전 관리를 할 수 있는  IaC를 위해 만들어진 도구이다.

.tf 형식의 파일 형식을 가진다.

AWS, Azure, GCP 같은 퍼블릭 클라우드뿐만이 아닌 다양한 서비스들 역시 지원한다.

 

Terraform 기본 구성 요소

구성 요소 설명
provider 테라폼으로 생성할 인프라의 종류
resource 테라폼으로 실제로 생성할 인프라 자원
state 테라폼을 통해 생성한 자원의 상태
(파일 형태로 남음, 실제 테라폼 명령어 실행의 결과값, 실제 인프라의 상태는 아님, 스테이트 파일과 현재 인프라의 상태를 똑같이 유지하는 게 키포인트, state는 원격 저장소인 'backend'에도 저장될 수 있음)
output 테라폼으로 만든 자원을 변수 형태로 state 파일에 저장하는 것
module 공통적으로 활용할 수 있는 코드를 문자 그대로 모듈 형태로 정의하는 것
(재사용 시 강점이 있음.
moudle은 한 번 만들어진 테라폼 코드로 같은 형태를 반복적으로 만들어낼 때 주로 사용됨.)
remote 다른 경로의 state파일을 참조하는 것. output 변수를 불러올 때 주로 사용
(원격 참조 개념으로 이해하면 좋음)

 

공부 방법

지금 당장 설치하고 작성해서 무언가를 만들어봐라!

먼저 가까워지는 게 더 중요하다.

Junior라면, 처음 시작하는 사람이라면 일단 설치하고 작성해서 무언가를 만들어봐라.

 

Terraform 기본 명령어

명령어 설명
init 테라폼 명령어 사용을 위해 각종 설정 진행
plan 테라폼으로 작성한 코드가 실제로 어떻게 만들어질지에 대한 예측결과를 보여줌
(가장 많이 쓰이는 명령어. 기본적으로 plan에 문제가 없어야 apply에 문제가 없을 확률이 높음. 습관화해야 하는 명령어)
apply 테라폼 코드로 실제 인프라를 생성하는 명령어
(실제 자원 생성. 실제 인프라에 영향을 끼치는 명령어이므로 주의깊게 실행해야 함)
Import 이미 만들어진 자원을 테라폼 state 파일로 옮겨주는 명령어
state 테라폼 state를 다루는 명령어. 하위 명령어로 mv, push와 같은 명령어
destroy 생성된 자원들 state 파일 모두 삭제하는 명령어

 

Ref.

https://www.youtube.com/watch?v=3qSpwqckvXQ&list=PLSJb8dsKrZ97QCyLe3HNwlpYxXJnpJqSF&index=1&ab_channel=DevOpsArt