Terraform이란
Terraform은 HasiCorp라는 회사에서 만든 'Infrastructure as a Code' 도구이다. 인프라를 코드를 실행함으로써 만드는 것이고 다양한 클라우드 회사들을 거래처로 끼고 있는 상황에서 FinOps를 감안해서 그때그때 최적의 인프라를 얻는 작업과 그리고 이 작업이 오류없이 매끄럽게, 불편함 없게 굴러가도록 하는 것이 IaC이다.
Terraform은 .tf파일에 3가지를 선언해줘야 한다.
Provider: 어떤 인프라인지 Resourse: 그 Provider에 해당하는 인프라 위에서 무엇을 만들지?? State: 확실한 과거의 수정내역을 담는다. 이 때 인프라 회사들이 사전에 IaC들에게 설정값들마다 '이 변수는 한 번 선언되면 중간에 수정은 불가능해. 상수처럼 동작해야해'를 미리 라벨링을 해둔다. 기본적으로 중간에 수정이 가능한 값의 IaC를 기반으로 한 수정요청은 'in-place update'로 처리하려고 한다. 바뀐 속성만 API기반으로 바꿔달라 하는 것이다. 그게 State에 기록으로써 남고 만약에 중간에 수정이 불가능한 값을 수정 시도한다면 지우고 새로만드는 작업을 거친다. 이 때 이 in-place update가 불가능하니까 지우고 새로 맞추는 작업은 IaC 코드 자체가 하는게 아니라 인프라딴에서 이뤄진다.