테라폼(Terraform)

박형석·2022년 4월 18일
0
post-thumbnail

왜 테라폼인가?

테라폼이 뭔가요?

terraform은 클라우드 리소스의 생성, 업데이트 및 삭제를 스크립팅 할 수 있는 cli기반 선언형 코드 인프라 툴 이다.
코드로 리소스를 관리하게 되면 인프라 업데이트 반복성 유지, 새로운 참여자를 위한 문서화, 휴먼에러를 없애는 이점을 누릴 수 있다.

테라폼의 강점

테라폼은 모든 클라우드 공급업체에 적용할 수 있는 범용 언어이며 공급업체에 구애받지 않는다. 이 말의 뜻은 테라폼을 배우면 모든 클라우드 서비스의 스크립팅이 가능하며 다향한 곳에 적용할 수 있다.

테라폼의 특징

  • 테라폼은 CLI이다: 다운로드하여 사용할 수도 있지만 클라우드 버젼도 있다.
  • 테라폼은 선언형 서비스이다: 종속성을 생성하고 추론할 리소스를 선언한다.
  • 테라폼은 타사 통합을 위해 공급자를 사용한다: 공급자는 테라폼이 다른 공급업체와 통합할 수 있도록 해준다.
  • 테라폼은 상태를 사용한다: 테라폼 init을 하게 되면 tfstate라는 파일이 생기게 되는데 이 파일 안에 인프라의 상태가 저장되게 된다.

테라폼을 먼저 사용하기 전에!!

우리는 클라우드 밴더들의 서비스를 먼저 공부해야 한다.

그 이유는,
만약 내가 테라폼을 이용해서 AWS EC2를 시작하고 싶을때 클라우드 업체의 서비스를 알지 못하면 테라폼 자체를 작성 할 수 없다. 그래서 테라폼을 사용하기전에 클라우드 공급업체의 서비스 들을 이해한 뒤 사용하는 것을 추천한다.

테라폼 기초

테라폼을 작성할 때는

terraform{
}

이라는 블록안에 공급자와 리소스등을 구성한다.

테라폼 기본 명령어

init

테라폼 명령어 사용을 위해 각종 설정을 진행한다.

plan

테라폼으로 작성한 코드가 실제로 어떻게 만들어질지에 대한 예측 결과를 보여준다. (plan 명령어들 습관화 하자)

apply

테라폼 코드로 실제 인프라를 생성하는 명령어이다.

import

이미 만들어진 자원을 테라폼 state파일로 옮겨주는 명령어 이다.

state

테라폼 state를 다루는 명령어이다. 하위 명령어로 mv, push와 같은 명령어가 있다.

destroy

생성된 자원들 state파일 모두 삭제하는 명령어이다.

Provider(init)

required_providers {
   aws = {
     source  = "hashicorp/aws"
     version = "~> 3.0"
   }
 }
}

공급자는 통합하려는 공급업체를 파악하고 리소스를 생성/관리하는 테라폼의 방법이다. 만약 AWS와 함께 Terreform을 사용하려면 AWS공급자가 필요하다. 그래서 해당 공급자의 플러그인을 가져오고 싶으면 terraform init 명령으로 가져올 수 있다.

process

테라폼의 프로세스는 다음과 같이 작동한다.

  1. provider에 엑세스하여 테라폼 설정
  2. 리소스 코드 작성
  3. terraform plan을 통해 apply적용시 생길 리소스들 확인
  4. terraform apply을 통해 적용함.
  5. 새로 업데이트된 상태 처리

다음 블로깅은 테라폼 실습을 통해 좀더 공부 해보자.

profile
Better Than Yesterday

0개의 댓글