[Terraform docs : AWS] 01. What is Infrastructure as Code with Terraform?

jb·2023년 1월 14일
0
post-thumbnail
post-custom-banner

서론

  • 아래에 글은 공식문서를 공부하며 정리한 내용입니다.

참고


IaC의 장점

Infrastructure as code (IaC) 도구를 사용하면 그래픽 UI가 아니라 conf 파일로 인프라를 관리할 수 있음.

다시 말해, 버저닝, 재사용, 공유할 수 있는 리소스 conf를 정의하여 안전한, 일관된, 반복 가능한 방식으로 인프라를 구축, 변경, 관리할 수 있음.

terraform이란?

Terraform은 HashiCorp의 IaC 도구.

terraform의 장점

terraform을 사용해 human-readable하고 declarative한 conf 파일에 리소스와 인프라를 정의하고 인프라의 수명 주기를 관리할 수 있음.

인프라를 수동으로 관리하는 것보다 Terraform을 사용하면 좋은 점

  • 멀티 클라우드 플랫폼의 인프라 관리 가능.
  • tarraform의 human-readable한 configuration 언어는 인프라 코드 생산성이 높음.
  • terraform state를 사용하면 나의 deployment 전체에서 리소스 변경 사항을 추적 가능.
  • git 같은 버전 컨트롤에 conf를 커밋하여 인프라를 안전하게 작업할 수 있음.

기본 용어 (provider, resource, module)

provider라고 하는 Terraform 플러그인을 사용하면 Terraform이 API를 통해 클라우드 플랫폼 및 기타 서비스와 상호 작용할 수 있음. 1,000개 이상의 provider가 있음 (e.g. Amazon Web Services(AWS), Azure, Google Cloud Platform(GCP), Kubernetes, Helm, GitHub, Splunk 및 DataDog 등). Terraform Registry에서 provider를 찾을 수 있음. 혹은 직접 작성할 수 있음.

provider는 컴퓨팅 인스턴스 또는 프라이빗 네트워크와 같은 개별 인프라 단위를 resource로 정의함. 서로 다른 다양한 provider들의 resource들을 module 이라는 reusable한 Terraform configuration으로 묶어 구성함으로써 일관된 언어 및 워크플로로 관리할 수 있음.

terraform의 declarative 특징

Terraform의 configuration 언어는 declarative(선언적)함. 즉, 선언적이라 함은 작업을 수행하기 위해 단계별 지침이 필요한 절차적 프로그래밍 언어와 달리 인프라에 대해 원하는 desired end-state(최종 상태)를 명시하는 것. 그래서 Terraform provider는 resource 간의 종속성을 자동으로 계산하여 올바른 순서로 리소스를 생성하거나 삭제함.

terraform으로 인프라를 배포하는 과정

  • Scope : 내 프로젝트의 인프라를 식별함.
  • Author : 내 인프라에 대한 configuration을 작성.
  • Initialize : Terraform이 인프라를 관리하는 데 필요한 플러그인을 설치.
  • Plan : conf와 일치하도록 Terraform이 수행할 변경 사항을 프리뷰.
  • Apply : 계획된 변경 사항을 적용.

state 파일로 실제 인프라 tracking

Terraform은 내 환경에 대한 source of truth(단일 진실 공급원, SSOT) 역할을 하는 state 파일에서 실제 인프라를 추적함. Terraform은 state 파일을 사용하여 conf와 일치하도록 인프라에 적용할 변경 사항을 결정함.

profile
기록하는 엔지니어 되기 💪
post-custom-banner

0개의 댓글