Terraform이란?

정다영·2022년 10월 24일
0

Terraform이란?

  • 테라폼은 하시코프(Hashicorp)에서 오픈소스로 개발중인 클라우드 인프라스트럭처 자동화를 지향하는 코드로서의 IaC도구
  • 코드로서, 인프라 서버를 구축 및 운영할 수 있는 오픈소스 소프트웨어

    기존 aws는 환경마다 s3를 생성하려면 환경 수만큼 s3 생성을 위한 작업이 필요하지만, 테라폼은 한 코드로 모든 환경의 s3를 구축할 수 있다.

Provisioning Tool

  • IaC는 Provisioning Tool과 SCM Tool로 나뉘는데 그 중 테라폼은 Provisioning Tool에 해당한다.
  • Provisioning Tool이란 컴퓨터나 가상 호스트를 사용해 개발팀에서 필요한 라이브러리나 서비스를 설치하는 것을 의미한다. 프로비저닝 영역에서는 개발팀이 사용한 코드 버전과 동일한 버전을 사용해 네트워크, VM, DB등을 구성한다.

Terraform 장점

1. 자동화

  • 위에서 언급한 것처럼 하나의 코드로 인프라를 관리 하기 때문에 서버 운영 및 관리가 모두 자동화가 될 수 있다.

2. 속도 및 안전

  • 인프라를 코드로 관리하기에 생산성 및 투명성을 높일 수 있다.
  • 정의한 코드를 쉽게 공유할 수 있어 효율적으로 협업할 수 있다.

3. 문서화

  • 모든 인프라가 코드로 기록되기 때문에 인프라 구축에 관한 자동 문서화가 가능하다. 이는 IaC의 가장 큰 특징이자 장점이다. 기존의 방식에 따르면 인프라를 직접 구현하고 관리하는 담당자 외에는 전체 서버를 전부 파악하기 어려웠으나 Terraform으로 관리된 서버는 누구라도 Terraform 코드로 전체적 서버 구성을 이해할 수 있다.

4. 리소스 그래프(Resource Graph)

  • 수동으로 서버관리시 실행 전 리뷰를 진행하는 것이 거의 불가능하다. 따라서 이미 문제가 발생했을 때 시점은 이미 애플리케이션에 영향을 끼친 경우가 대다수였다. 하지만 Terraform의 경우 변경 사항이 인프라에 어떤 영향이 미칠지 미리 확인 가능하다.

5. 형상 관리

  • git을 통해 형상관리가 가능하며, 변경 기록을 쉽게 확인 할 수 있다.

Terraform 기본 개념

  • resource
    실제로 생성할 인프라 자원을 의미한다.
  • provider
    Teraform으로 정의할 Infrasturcture Provider를 의미한다.
  • output
    인프라를 프로비저닝 한 후에 생성된 자원을 output부분으로 추출 가능하고 remote state에서 활용 가능하다.
  • backend
    Terraform의 상태 snapshot이 저장되는 위치를 정의한다.
  • Module
    함께 사용되는 resource의 컨테이너이다. Module 사용시 변수만 변경해서 동일한 리소스를 재사용 할 수 있는 장점이 있다.
  • remote State
    remote State 사용시 VPC, IAM같은 공용 서비스를 다른 서비스에 참조 가능하다. tfstate파일(테라폼 상태정보파일)이 저장되어 있는 backend 정보를 명시하면 Terraform이 해당 backend에서 output 정보를 가져온다.

Terraform 명령어

  • init
    Terraform 사용을 위해 각종 설정을 진행한다.
  • plan
    Terraform으로 작성한 코드가 실제로 어떻게 적용될지에 대한 예측 실행한다.
  • apply
    실제 인프라를 생성한다.
  • import
    이미 만들어진 자원을 테라폼 state 파일로 옮긴다.
  • state
    테라폼 state를 생성하거나 재정의한다.
  • destroy
    생성된 resource, state 파일을 모두 삭제한다.

공식문서
https://developer.hashicorp.com/terraform/intro

profile
Hello World~

0개의 댓글