본문 바로가기

Terraform

[Terraform] 테라폼의 기본 개념

이번 시간에는 Terraform의 기본 개념들에 대해서 설명해보려고 합니다.

Provisioning (프로비저닝)

어떤 프로세스나 서비스를 실행하기 위한 준비 단계를 프로비저닝이라고 이야기합니다.

프로비저닝에는 크게 네트워크나 컴퓨팅 자원을 준비하는 작업과 준비된 컴퓨팅 자원에 사이트 패키지나 애플리케이션 의존성을 준비하는 단계로 나뉘어집니다.

명확한 경계는 불분명하지만 테라폼은 전자를 주로 다루는 도구입니다.

Provider (프로바이더)

테라폼과 외부 서비스를 연결해주는 기능을 하는 모듈입니다.

예를 들어 테라폼으로 AWS 서비스의 컴퓨팅 자원을 생성하기 위해서는 aws 프로바이더를 먼저 셋업해야합니다.

프로바이더로는 AWS, 구글 클라우드 플랫폼(Google Cloud Platform), 마이크로소프트 애저(Microsoft Azure)와 같은 범용 클라우드 서비스를 비롯해 깃허브(Github), 데이터도그(Datadog), DNSimple과 같은 특정 기능을 제공하는 서비스, MySQL, 레빗MQ(RabbitMQ), 도커Docker와 같은 로컬 서비스 등을 지원합니다.

전체 목록은 테라폼 프로바이더 문서에서 찾아볼 수 있습니다.

Resource (자원)

리소스란 특정 프로바이더가 제공해주는 조작 가능한 대상의 최소 단위입니다.

예를 들어 AWS 프로바이더는 aws_instance 리소스 타입을 제공하고, 이 리소스 타입을 사용해 Amazon EC2의 가상 머신 리소스를 선언하고 조작하는 것이 가능합니다.

EC2 인스턴스, 시큐리티 그룹, 키 페어 모두 aws 프로바이더가 제공해주는 리소스 타입입니다.

HCLHashicorp Configuration Language

HCL은 테라폼에서 사용하는 설정 언어입니다.

테라폼에서 모든 설정과 리소스 선언은 HCL을 사용해 이루어집니다. 테라폼에서 HCL 파일의 확장자는 .tf를 사용합니다.

 

Plan (계획)

테라폼 프로젝트 디렉터리 아래의 모든 .tf 파일의 내용을 실제로 적용 가능한지 확인하는 작업을 계획이라고 합니다.

테라폼은 이를 terraform plan 명령어로 제공하며, 이 명령어를 실행하면 어떤 리소스가 생성되고, 수정되고, 삭제될지 계획을 보여줍니다.

 

Apply (적용)

테라폼 프로젝트 디렉터리 아래의 모든 .tf 파일의 내용대로 리소스를 생성, 수정, 삭제하는 일을 적용이라고 합니다.

테라폼은 이를 terraform apply 명령어로 제공합니다. 이 명령어를 실행하기 전에 변경 예정 사항은 plan 명령어를 사용해 확인할 수 있습니다. 적용하기 전에도 플랜의 결과를 보여줍니다.

 

 

테라폼 참고자료