Among Us - Yellow Crewmate [Terraform] Terraform 개념 다지기

DevOps/Terraform

[Terraform] Terraform 개념 다지기

감쟈! 2021. 3. 28. 14:34

1. Terraform ?

Terraform은 Hashicorp에서 오픈소스로 개발중인 IaC (Infrastructure as Code)이다. IaC는 코드로 인프라를 관리하고 프로비저닝 하는 도구이다. 매번 동일한 환경의 인프라를 계속 만드는것 보다 코드로 된 파일을 사용하여 인프라 생성을 자동화하여 효율적으로 업무를 진행할 수 있다.

 

현재 퍼블릭 클라우드가 대세가 되면서 Terraform같은 IaC는 선택이 아니라 필수라고 생각한다. AWS에도 Terraform과 비슷한 Cloudformation 이라는 서비스가 있지만 Cloudformation은 AWS에 종속적이고, Terraform은 AWS,GCP,Azure 등 어느 환경에서든 사용가능하다는 큰 장점이 있다.

 

Terraform에서 코드로 인프라를 자동화할 때 주의할 점은 바로 멱등성이다. 멱등성이란, 코드를 실행할 때 항상 같은 값을 내야 하는 성질이다. 코드를 처음 실행 했을때와 두번째 실행 했을때가 다르면 안된다는 소리이다!!

 

Terraform은 Go 언어로 개발되었고, 사용자들은 HCL 언어로 클라우드 리소스를 정의한다.

HCL (Hashicorp Configuration Language)는 인프라를 정의하기 위한 목적으로 만들어진 특수목적의 언어다.

 


2. Terraform 설치하기

 

www.terraform.io/downloads.html

 

Download Terraform - Terraform by HashiCorp

Download Terraform

www.terraform.io

1. 위 링크에서 해당 OS에 맞게 wget 이용해서 다운받아주자

 

 

 

2. 다운받은 파일은 ZIP 파일이기 때문에 unzip 사용해서 압축 해제를 해주자

 

 

 

3. 압축해제된 terraform 파일을 /usr/local/bin 경로로 옮겨준 후 terraform -v 하면 terraform의 버전을 확인할 수 있다.


3. Terraform 주요 명령어 !

 

1. terraform init

 

init 작업은 terraform을 사용하기 위해 설정했던 provide나 module등의 정보를 가진 tf파일을 생성한다.

init 작업을 실행하면 가장 마지막에 적용되었던 내용이 저장되어 파일이 생성된다.

기존에 다른 개발자가 이미 tf파일에 정의해놓은 인프라가 있다면, 다른 개발자는 tf파일을 init 작업을 통해 local에 sync를 맞출 수 있다.

terraform init

 

 

2. terraform plan

 

terraform plan은 내가 코드로 작성한 인프라를 실행하기 전에 미리 변경사항을 보여주는 명령어이다.

plan에서 에러가 나오지 않았다 하더라도 실제 적용할때는 에러가 발생할 수 있다.

 

apply했을때와 똑같은 정보를 보여주며, 실제로 반영되지는 않는다.

terraform plan

 

3. terraform apply

 

실제로 코드로 작성한 인프라를 배포하는 명령어이다. apply를 사용하면 지정했던 provider에 실제로 해당 인프라가 생성되고 작업 결과가 tf파일에 저장된다.

 

terraform apply 명령어 실행시 plan에서 봤던 결과물을 실제로 생성하는 과정

terraform apply

 

 

 

4. terraform destory

 

terraform destory는 apply를 통해 생성했던 인프라를 제거하는 명령어이다.

 

terraform destroy