테라폼(Terraform)은 Hashicorp에서 오픈소스로 개발 중인 클라우드 인프라스트럭처 자동화를 지향하는 코드로서의 Infrastructure as Code, IaC 도구입니다.
간단하게 설명하자면, 테라폼 코드를 실행하면 aws의 인프라를 생성할 수도 삭제할 수도 있습니다.
ex) 기존에는 stage, beta, dev 환경마다 s3를 생성하려면 aws 콘솔 창에서 3번의 반복적입 작업을 통해서 생성하였지만, 테라폼은 코드 하나로 세개의 환경을 동시에 생성하고 또한 생성한 것을 동시에 제거할 수 도 있습니다.
https://www.terraform.io/downloads.html 링크에 들어가서 다운로드 받으면 됩니다.
resource : 실제로 생성할 인프라 자원을 의미합니다.
provider : Provider는 리소스들이 배포될 환경을 정의한 것으로 aws, gcp 등이 있다.
output : 인프라를 프로비저닝 한 후에 생성된 자원을 output 부분으로 뽑을 수 있습니다. Output으로 추출한 부분은 이후에 remote state에서 활용할 수 있습니다.
backend : 백엔드는 Terraform의 상태 snapshot이 저장 되는 위치를 정의 합니다. 백엔드는 주로 Terraform이 상태를 저장하는 위치를 결정 합니다.
module : Module은 함께 사용되는 여러 리소스의 컨테이너입니다. Module을 사용하면 변수만 바꿔서 동일한 리소스를 손쉽게 생성할 수 있다는 장점이 있습니다.
remote state : remote state를 사용하면 VPC, IAM 등과 같은 공용 서비스를 다른 서비스에서 참조할 수 있습니다. tfstate파일(최신 테라폼 상태정보)이 저장되어 있는 backend 정보를 명시하면, terraform이 해당 backend에서 output 정보들을 가져옵니다.
이미 만들어진 자원을 테라폼 state 파일로 옮겨주는 명령어
https://learn.hashicorp.com/terraform
https://www.44bits.io/ko/keyword/terraform
https://terraform101.inflearn.devopsart.dev/preparation/terraform-basic/