IaC 란, Infrastructure as Code 를 말한다.
즉, 인프라를 코드로 구축한다는 말이다. AWS, GCP, Azure 등 많은 인프라 리소스들을 IaC 툴을 사용하면 콘솔에서 작업하지 않고 코드만으로도 구축하고 관리할 수 있다.
IaC는 크게 4가지로 나눠진다.
Terraform
은 프로비저닝 도구로 서버 자체를 생성한다는 점에서 앤서블과 다르다.
테라폼(Terraform)이란 Hashicorp(하시코프)에서 Go언어로 개발한 오픈소스 IaC 도구이다. 생각보다 자주 릴리즈되고 있으며, 대부분의 AWS 리소스를 구축할 수 있다. 최근 사용하면서 안되는 몇가지 사항을 마주했기에 모두 가능하다고 확정짓지 못하겠다🥲
테라폼은 HCL이라고 이야기하는데, HCL이란 HashiCorp Configuration Language
로 HCL 형식 또는 json 형식으로 작성할 수 있다.
HCL에 대해 조금 더 이야기를 해보자,
HCL은 사람이 쉽게 읽을 수 있고 컴퓨터가 실행가능한 언어로 선언형 언어이며 튜링완전언어의 특성을 갖는다.
선언형 언어
란?
무엇을 할지. 수행할 목표만 명시하고 어떻게 수행할지에 대해서는 정의하지 않는 언어이다. 우리가 흔히 알고 있는 명령형 언어(C, C++, C#, JAVA...)와는 반대되는 개념이다.
선언형 언어의 예로는 HTML, LIPS, XML 등이 있다.
어떤 장점이 있어서 테라폼을 사용하는지 찾아봤다.