- 이제는 AWS 콘솔에서 클릭 몇 번으로 서버 배포, 명령어 한 줄로 다양한 인프라 구축하는 시대
- IaC
- 코드로 인프라 관리하고 프로비저닝 하는 것
- 우리가 원하는 네트워크, 서버 스토리지 등을 모두 코드로 저장, 관리
- 이로써 코드 공유, 테스트, 재사용해 인프라를 더 생산성있게 관리
- Terraform
- Terraform은 IaC 중에서 가장 유명한 도구
- AWS, GCP, Azure 같은 클라우드뿐만 아니라 사내 솔루션까지 모두 관리함
- 원하는 최종 결과 정의하는 선언형 방식 사용해 결과 예측 쉬움
- 코드를 재사용하더라도 같은 결과 보장함
- terraform plan을 하면 AWS에서 어떻게 생성될지 구체적 계획 세움
- terraform apply 통해 실제 적용
- Terraform으로 생성된 리소스 정보를 tfstate라는 JSON 파일로 관리
- Terraform 사용 방식
- 여러 키워드로 유저 입력 받아 리소스 생성, 실행 결과를 CLI 상에 출력하는 기능 제공
- Provider
- 리소스 유형 구현하는 플러그인
- AWS, GCP 같이 사용하는 클라우드 플랫폼과 서비스의 provider 찾아 구성에 추가, 해당 리소스 사용해 인프라 프로비저닝
- Module
- 관련 리소스 그룹을 단일 리소스인 것처럼 관리하는, 재사용 가능한 작은 Terraform 구성
- 다른 사람이 만든 모듈도 자유롭게 활용해 적은 코드로 많은 리소스를 효율적으로 관리함
- 구성을 다르게 해서 같은 모듈을 여러번 호출
- Resource
- 가상 네트워크, 컴퓨팅 인스턴스 또는 DNS 레코드와 같은 상위 수준 구성 요소와 같은 하나 이상의 인프라 개체 설명하는 키워드
- Variable
- 입력 변수는 모듈의 소스 코드 변경하지 않고 리소스 속성 지정함
- 프로그래밍 언어의 함수 매개 변수와 비슷함
- 입력 변수 통해 모듈을 더 유연하게 공유하고 재사용함
- Output
- 출력값은 명령줄에서 사용하는 인프라 정보 만들고, 사용할 다른 Terraform 구성 정보 노출할 수 있음
- 프로그래밍 언어의 반환값과 비슷함