▪ HashiCorp 사의 코드형 인프라스트럭처(Infrastructure as Code) 도구
▪ 클라우드, 물리 시스템, VM, 네트워크 장비, 컨테이너 등 인프라의 자동화된 배포,
변경 및 관리를 제공
▪ 사람이 쓰고 읽을 수 있고 자동화된 배포를 위해 HCL(HashiCorp Configuration
Language)이라는 구성 파일로 작성하고 인프라, 플랫폼 및 소프트웨어를 관리할 수
있음
▪ 구성 파일은 단일 애플리케이션 또는 인프라 전체를 실행하는데 필요한 구성 요소를
선언
▪ 관리자가 원하는 상태에 도달하기 위해 수행 할 작업을 선언하고, 실행 계획을 생성 한
다음 이를 실행하여 정의된 인프라를 구성
▪ 기존의 구성이 변경되어야 한다면 변경된 사항을 확인하고 적용할 수 있는 증분 실행
계획을 적용
▪ 프로바이더(Provider)의 API와 상호작용하며 리소스를 배포 및 관리
▪ 코드형 인프라
▪ 실행 계획
▪ 리소스 종속성
▪ 변경 자동화
▪ 파일 확장자
▪ 텍스트 인코딩
▪ 디렉토리
▪ 구성 파일은 인프라의 리소스를 정의하는 것이 주요 목적
▪ 구성 파일에는 프로바이더(Provider), 프로바이더 요구사항, 리소스 등을 정의
▪ 구성 파일의 블록 정의
▪ Terraform은 프로바이더 플러그인을 사용하여 원격 시스템(클라우드 등)과 상호작용
▪ 프로바이더 요구사항을 정의해 필요한 프로바이더 및 버전을 지정
▪ 프로바이더는 리소스를 관리
▪ 모든 리소스의 유형은 프로바이더에 의해 구현
▪ Terraform 구성 파일의 문법 및 스타일은 어느 정도 유연성을 가지고 있음
▪ 하지만 팀의 다른 사람이 작성한 파일 및 모듈간에 스타일 및 규칙을 일관성있게
유지하는 것이 유리
각 중첩 레벨에 대해 두 개의 공백을 가짐
여러 속성이 동일 레벨에 있는 경우 등호를 정렬함
블록을 구분할 때 빈 줄 하나를 삽입
블록 내에서 속성의 논리적인 그룹을 빈 줄로 분리
속성과 메타 속성이 모두 포함된 블록의 경우, 메타 속성을 먼저 나열하고,
빈 줄로 다른 속성과 분리
최상위 블록은 항상 하나의 빈 줄로 서로 분리
동일한 유형의 여러 블록을 다른 유형의 다른 블록과 분리하지 않음