오픈소스 테라폼(Terraform) 5분 만에 이해하기





Terraform (테라폼)은 오픈소스 인프라 자동화 관리 툴입니다. 데브옵스(DevOps) 엔지니어들이 자주 사용하는 유명한 도구입니다.  IaC 라는 것을 보신 적인 있으실 겁니다. IaaS, PaaS, SaaS 와 비슷한 냄새가 나실 겁니다. IaC 는 Infrastructure as Code 의 줄임말입니다.  declarative(선언형) 언어는 결과/목적/목표만 명시하면 그 과정은 알아서 처리하는데, 모든 과정/단계를 정의해야 하는 imperative(명령형) 언어와 차이가 있습니다. 선언형 코드로 인프라를 생성하고, 수정하고, 삭제하는 오픈소스 도구가 테라폼입니다. 

인프라스트트럭처와 플랫폼, 그 플랫폼위에 실행 중인 서비스들을  자동화해서 관리하는 툴

아주 짧게 다시 요약하면, 

Terraform 은 infrastructure (인프라) provisioning (프로비저닝) tool (도구) 입니다.  

인프라라고 함은 서버, 스토리지, 네트워크 같은 것을 말합니다. 엔지니어가 서버를 구축하고, OS를 설치하고, 필요 소프트웨어를 깔고, 네트워크를 설정하고, 접근제어 IAM을 설정하고, 다시 여기에 서버를 증설하고, 여러가지 설정을 변경하고, 삭제합니다. 그리고 개발환경을 만들어서 잘 돌아가서, 프로덕션 환경을 똑같이 만들어야 합니다. 이것을 일일이 하려면 아주 오랜 시간이 걸리고 여러 휴먼 에러 (human error)가 발생할 수 있습니다. 이것을 자동화 하고, 코드로 실행시킨다면 아주 편리해집니다. 선언형 언어를 사용하기 때문에 서버 숫자를 10대 라고 하면 서버 10대가 생성되고, 이것을 나중에 서버 숫자 5대라고 명시하면 서버 5대로 수정이 됩니다. 이 모든 것을 테라폼이 하게 됩니다. 그리고 dev env 의 설정을 그대로 복제해서 ( 그 코드를 그냥 다시 실행시키면 됨) prod env 를 아주 편리하고 쉽게 만들 수 있게 해줍니다.  

인프라는 항상 변경이 되는데 이때 테라폼을 쓰면 자동화하여 관리할 수 있습니다. 아니면 수백대의 서버를 엔지니어가 일일이 변경해줘야 합니다. 그래서 영어로 heavy lifting 을 안하게 해준다고 합니다. 즉 무거운 거를 들고 힘을 쓰는 것은 테라폼이 대신 해준다는 의미입니다.

제가 예전에 테라폼 사용을 데모한 글이 있습니다. 참고바랍니다. 


테라폼은 provider 의 API를 사용합니다. 

출처 : https://www.terraform.io/intro


1700 개의 Provider 가  수천개의 resource 와 service 를 관리합니다. 

프로바이더 관련은 테라폼 레지스트리 (Terraform Registry) : https://registry.terraform.io/

에서 자세히 알아보실수 있습니다.


 

출처 : https://registry.terraform.io/





출처 : https://www.terraform.io/intro


위의 그림 요약 : 

TF-Config  파일  : 무엇을 만들고 어떻게 구성/설정 할 것인지 

코어는 config 파일과 상태 정보를 가지고 plan (계획)을 세운다. 무엇을 생성하고, 수정하고, 삭제할 것인지. 현재 상태, 원하는 상태 비교. 

테라폼이 create plan 하고 나서 providers 와 그 플랜을 execute 한다.  


  • 아래와 같이 configuration file 을 작성하고 실행하게 됩니다. 자세한 것은 제가 예전에 쓴 글을 참고해 주세요. 제가 한 데모를 보시면 이해하기 쉬우실 것 같습니다. 

출처 : https://www.terraform.io/language

결론 : 

테라폼은 인프라 프로비저닝 도구입니다.

현재 인프라에 추가/ 수정 /삭제 변경이 필요한 경우, 서버를 늘리고, 설정을 변경하고, 보안을 추가하고 할때 테라폼을 쓰면 아주 편리합니다. 

인프라 설치도 중요하지만 설치한거 관리도 중요한데 그때도 테라폼을 쓰면 됩니다.

테라폼을 쓰면 인프라를 쉽게 만들고, 기존 인프라도 쉽게 수정하고, 만들어진 인프라를 쉽게 관리 할 수 있습니다. 인프라는 만들고 난 뒤에도 계속적인 변경이 있는데 그래서 자동화가 필수입니다.

개발환경에 설치한 인프라를 그대로 복제해서 옮길수 있습니다. 개발환경에 그 인프라가 완벽하고 테스트를 다 통과하고 안전하다 생각되면 그거 그대로 복제해서 만들어 운영하면 되는데 그걸 테라폼이 쉽게 자동화해서 도와줍니다. 

dev env 를 그대로 prod env 로 복제할 때 테라폼 코드만 다시 사용하면 끝입니다. 

테라폼은 -AWS , gcp, azure, IaaS  말고도 kubernetes 등 PaaS 에서도 사용가능합니다.


관련 내용 :

인프라 프로비저닝(PROVISIONING) 자동화 도구, 오픈소스 테라폼(TERRAFORM) 소개 및 데모

테라폼(TERRAFORM)으로 인프라 수정하고 삭제하기


- The End - 

Comments