DEN.SHIN.DEVPOSTSCONTACT

Terraform 에 대하여 (IaC)


1 . 테라폼이란 ?

Terraform 은 하시코프 (Hashicorp) 에서 오픈소스로 개발중인 InfraStructure 관리도구

서비스 실행에 필요한 환경을 구축하는 도구로 설정관리 도구와프로비저닝 도구로 분류

코드로서의 인프라스트럭처 (Infrastructure as Code, IaC) 를 지향하고 있는 도구로, GUI나 웹 콘솔을 사용해 서비스 실행에 필요한 리소스를 관리하는 대신 필요한 리소스들을선언적인 코드로 작성해 관리할 수 있도록 함

2 . 테라폼 설치

맥OS 에서는 Homebrew 를 사용해 간단하게 설치가 가능

$ brew install terraform

3 . 기본 개념

1 . 프로비저닝 (Provisioning)

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

크게 네트워크나 컴퓨팅 자원을 준비하는 작업준비된 컴퓨팅 자원에 사이트 패키지나 애플리케이션 의존성을 준비하는 단계로 나눠짐

테라폼은 전자를 주로 다루는 도구

2 . 프로바이더 (Provider)

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

예를 들어, 테라폼으로 AWS 서비스의 컴퓨팅 자원을 생성하기 위해서는 AWS Provider를 먼저 셋업해야 함

프로바이더로는 AWS, GCP, Azure 와 같은 범용 클라우드 서비스를 비롯, Github, DataDog 과 같은 특정 기능을 제공하는 서비스, Mysql, Docker 와 같은 로컬 서비스를 지원

3 . 리소스 (Resource)

특정 프로바이더가 제공해주는 조작가능한 대상의 최소 단위

예를 들어, AWS 프로바이더는 aws_instance 리소스 타입을 제공하며, 해당 리소스타입을 통해 EC2의 가상머신 리소스를 선언하고 조작 가능

4 . HCL (Hashicorp Configuration Language)

테라폼에서 사용하는 설정 언어

테라폼에서 모든 설정과 리소스 선언은 HCl 을 사용해 이루어짐

확장자는 .tf를 사용

5 . 계획 (Plan)

테라폼 프로젝트 디렉토리 아래의 모든 .tf 파일의 내용을 실제로 적용 가능한지 확인하는 작업

이를 terraform plan 명령어로 제공하며, 해당 명령어를 실행하면 어떤 리소스가 생성되고, 수정되고, 삭제될지 계획을 보여줌

6 . 적용 (Apply)

테라폼 프로젝트 디렉토리 아래의 모든 .tf 파일의 내용대로 리소스를 생성, 수정, 삭제하는 일

이를 terraform apply 명령어로 제공

TERRAFORM_알아보기
Terraform 으로 AWS EC2, RDS 생성 해보기