관리 메뉴

밤 늦게까지 여는 카페

terraform이 뭘까? - IaC! 인프라도 형상 관리해야죠! 본문

DevOps

terraform이 뭘까? - IaC! 인프라도 형상 관리해야죠!

Jㅐ둥이 2022. 10. 18. 09:39
반응형

안녕하세요. 오늘은 가장 인기 있는 IaC 툴 중 하나인 terraform에 대해서 공부해보려고 합니다.

혹시 진행 중인 프로젝트의 인프라가 클라우드 서비스를 통해서 관리되고 있고,
인프라에 대한 형상 관리가 필요하다면 terraform에 대해서 공부해보는 것을 추천드립니다.

IaC란

IaC는 Infrastructure As Code의 약자로 인프라의 할당, 수정, 배포, 관리를 코드로 진행하자는 개념입니다.
terraform 이외에도 다음과 같은 유명한 IaC 툴들이 있습니다.

  1. terraform
  2. AWS CloudFormation
  3. Azure Resource Manager
  4. Google Cloud Deployment Manager
  5. Ansible

IaC 툴을 사용하는 이유

요즘 클라우드 서비스가 제공되면서 개발자들이 인프라까지 관리해야 하는 경우가 많아졌습니다.
특히나 스타트업 같은 경우에는 적은 수의 개발자들이 인프라를 관리하면서 서비스까지 개발해야 합니다.

코드는 Version Control System(VCS)이 있어서 변경사항이 기록되지만 인프라는 그렇지 않습니다.
어떻게 변경되었고, 어떤 리소스들을 사용하고 있는지 신경써서 관리하지 않으면 인수인계도 어렵고, 비용 추적도 어려워집니다.

사실, 클라우드 서비스들이 리소스의 생성, 수정, 삭제 관련 API들을 제공해주기 때문에 어떤 프로그래밍 언어를 사용하더라도 인프라를 코드로 관리할 수 있습니다.

즉 개발자들과 비교적 더 친한 VCS로 인프라를 관리할 수 있는 것이죠!

  • 문서 작성은 필수지만 항상 귀찮더라구요....ㅜ


그렇지만 자사 서비스들 개발하기도 바쁜데 클라우드 서비스에 새롭게 추가되는 리소스들과, API의 변경사항들을 유지보수할 시간이 있을까요?

IaC 툴들을 사용하면 이런 시간을 절약할 수 있습니다.
게다가 전용 스크립트 언어를 제공하기 때문에 직접 코드로 작성하는 것보다 훨씬 쉽고, 빠르게 인프라를 관리할 수 있습니다.

terraform 설치법

리눅스 기준으로 설치법만 작성하였습니다.
자세한 사항은 아래의 공식 문서 링크에서 확인하실 수 있습니다 :)
윈도우도 설치프로그램 다운로드 하는 것이 전부라서 쉽게 설치하실 수 있습니다!

wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg 
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list  
sudo apt update && sudo apt install terraform

공식 문서 링크: https://www.terraform.io/downloads

terraform 사용법

terraform 을 사용하면서 자주 사용하는 명령어는 많지 않더라구요.

terraform init  
terraform plan  
terraform apply  

이 3가지가 terraform의 거의 모든 명령어입니다.

terraform init

현재 디렉토리를 working directory 삼아 terraform 워크스페이스를 초기화합니다.
명시된 terraform 버전으로 사용하는 모듈(aws, azure, gcp 등의 provider가 제공)들을 설치합니다.

terraform plan

terraform 워크스페이스에 있는 terraform 스크립트의 내용과 .tfstate를 비교하여 변경 사항을 알려줍니다.
새롭게 추가 될 리소스와 삭제될 리소스를 보여줍니다.

  • 실제로 인프라가 변경되는 것은 아니고 변경사항만 보여줍니다.

terraform apply

terraform 워크스페이스에 있는 terraform 스크립트를 기반으로 실제 인프라를 변경시킵니다.
apply를 실행하더라도 plan 결과를 보여주고 apply를 진행할지 말지 사용자에게 질의하므로
마지막으로 꼭, 꼭 변경사항을 검토하고 진행하시기 바랍니다.

  • 얼핏 보고 넘겼다가 RDS가 삭제되는 불상사가 있었습니다...ㅜ


나머지는 스크립트 작성에 달려있습니다!
IaC 툴인 terraform에 공부해보신 소감은 어떠신가요?
스크립트 작성은 테라폼으로 간단한 스택을 만들어보는 포스팅에서 다뤄보겠습니다!

반응형