본문 바로가기
[Cloud & Infrastructure]/[AWS]

[AWS] Terraform으로 AWS 리소스 프로비저닝하기 [1/2]

by 코드몽규 2022. 7. 15.
반응형

날씨도 덥고 이것저것 준비할게 많아서 공부도 잘되지 않는 요즘 

 

 AWS 자격증 공부를 하며 알게된 오프소스 서비스가 있다. 

 

바로 'Terraform' 이다. 

 

오늘은 가볍게 'IaC 도구' 인 'Terraform'에 대해 포스팅해보겠다.

 


Terraform(테라폼)

Terraform is an open-source infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services. Terraform codifies cloud APIs into declarative configuration files. 

 

  쉽게 말해, 테라폼은 IaC를 지향하는 도구로써, GUI나 웹 콘솔을 사용해 서비스 실행에 필요한 리소스를 관리하는 대신

필요한 리소스들을 선언적인 코드로 작성해  관리할 수 있도록 해준다.                                                                                                       

인프라를 코드로 관리하면 다양한 이점을 얻을 수 있다. 예를들면, 서비스를 구축하고 환경을 변경, 배포하는 반복 작업에서 소요되는 시간을 줄일 수 있고 작업의 효율성을 증가 시킬 수 있다. 

 

그럼 잠깐! IaC로서 리소스를 관리하는 툴은 테라폼 밖에 없을까 ??

 

AWS 자격증을 공부하며 앞서말한 테라폼처럼 리소스를 추상화하여 관리하는 서비스인 CloudFormation에 대해 알게 되었고, 테라폼과 어떠한 차이점이 있는지 궁금해졌다. 

 

AWS CloudFormation

  

  • 탬플릿을 작성하여 리소스를 프로비저닝 할 수 있다. 
  • 리소스간의 종속성을 자동으로 관리한다.
  • 친숙한 프로그래밍 언어로 작성 
  • json/yaml로 작성
  • 멀티 리전 지원
  • ui지원으로 추후 관리 용이

Terraform

 

  • .tf파일을 템플릿으로 작성하여 apply 명령으로 리소스를 프로비저닝
  • CLI환경으로 작업 (UI제공 X)
  • 종속성 부여 가능 
  • 리소스를 한번에 삭제 가능 및 재사용 가능

 

차이점

  • AWS CloudFormation은 aws 이외의 리소스에서 사용되기 힘들다 하지만 테라폼은 여러 벤더들의 클라우드 서비스에 적용가능하다. 즉 테라폼을 사용하면 훨씬 많은 서비스에 적용할 수 있다.

 


테라폼 시작하기

 

맥OS 환경에서는 홈브류를 사용하여 설치 가능하다.

 

나는 윈도우 환경을 사용하기 때문에 Window 환경에서 설치하는 법을 살펴보자 한다. 

 

1. [테라폼 다운로드]

 

Downloads | Terraform by HashiCorp

Terraform is an open-source infrastructure as code software tool that enables you to safely and predictably create, change, and improve infrastructure.

www.terraform.io

 

2. [다운로드 파일 압축 해제 및 환경변수 등록]

 

압축해제한 응용프로그램이 있는 경로를 환경변수 path로 편집해준다.

 

[방법]

내 컴퓨터 속성

고급 시스템 설정

환경변수 Path편집

새로만들기

응용프로그램 경로 등록

 

3. 이후 vscode 등 IDE 환경에서 터미널을열고 Terraform명령어를 입력하여 정상작동이 되면 성공적으로 설치된것이다.

 


테라폼으로 배포 워크 플로우 표준화 하기 

 

테라폼으로 인프라를 배포하는 과정은 아래 그림을 보면 이해하기 쉽다. 

출처: hashicorp learn

테라폼을 사용하여 인프라를 배포하기전 아래 5가지 항목에 대한 표준화가 진행되어야 한다.

 

  • 범위(scope) - 프로젝트의 인프라를 식별합니다.
  • 작성자(author) - 인프라에 대한 구성을 작성합니다.
  • 초기화(initialize) - Terraform이 인프라를 관리하는 데 필요한 플러그인을 설치합니다.
  • 계획(plan) - 구성과 일치하도록 Terraform이 수행할 변경 사항을 미리 봅니다.
  • 적용(apply) - 계획된 변경을 수행합니다.

AWS와 테라폼(Terraform)으로 구현한 IaC

테라폼의 개념과 설치, 배포 워크 플로우등에 대해 간단하게 알아봤다.

 

이제는 기초 튜토리얼을 통해 실제 리소스를 IaC환경을 통해 프로비저닝 하는법을 정리해보겠다.

 

아래는 현 포스팅의 출처이자 참고한 블로그이다. 

설명이 더 상세하고 친절하여 해당 포스팅만 따라해도 기초 튜토리얼을 완성할 수 있다. 

 

 

테라폼(Terraform) 기초 튜토리얼: AWS로 시작하는 Infrastructure as Code

테라폼(Terraform)은 인프라스트럭처를 선언적인 코드로 작성하고 관리할 수 있게 해주는 도구입니다. 이 글에서는 테라폼에 대해 소개하고, 이를 사용해 AWS 리소스를 정의하고 프로비저닝하는 방

www.44bits.io

 

 

테라폼의 기본 개념들

 

테라폼을 사용할 때 자주 언급되는 용어들을 정리해보고 넘어가보자 한다.

 

 

  • 프로비저닝(provisioning)
    • 어떤 프로세스나 서비스를 실행하기 위한 준비 단계를 프로비저닝이라고 한다. 프로비저닝에는 크게 2가지 종류가 있다. 첫째는 네트워크나 컴퓨팅 리소스를 준비하는 작업과 준비된 컴퓨팅 자원에 애플리케이션 의존성을 준비하는 단계로 나뉘어진다. 
  • 프로바이더(provider)
    • 테라폼과 외부 서비스를 연결해주는 기능을 하는 모듈이다. 예를 들어 AWS 서비스를 테라폼을 사용하여 생성하기 위해서는 AWS 프로바이더를 먼저 설정해줘야한다. 즉, 사용하는 서비스의 벤더에 따라 설정해줘야하는 프로바이더가 다르다고 생각하면된다.
  • 리소스
    •  리소스란 특정 프로바이더가 제공해주는 조작 가능한 대상의 최소 단위이다. 예를들어 AWS 프로바이더에서는 EC2의 인스턴스 리소스 타입을 제공하며 이에 관련된 보안그룹, 키페어 등이 모두 리소스 타입에 속하게 된다.
  • HCL
    • HCL은 테라폼에서 사용하는 설정 언어이다. 테라폼에서는 모든 설정과 리소스 선언은 HCL을 사용해 이루어진다. 즉 테라폼에서 HCL파일의 확장자인 .tf에서는 HCL을 사용한다고 생각하면 쉽다.
  • 계획(plan)
    • 테라폼 프로젝트 디렉터리 아래의 모든 .tf 파일의 내용을 실제로 적용 가능한지 확인하는 작업이 '계획'이다.
    • terraform plan 명령어로 실행가능하며 어떤 리소스가 생성,수정,삭제될지 plan을 보여준다.
  • 적용(apply)
    • 테라폼 프로젝트 디렉터리 아래의 모든 .tf파일의 내용대로 리소스를 생성, 수정, 삭제하는 일이 '적용'이다.
    • terraform apply 명령어로 실행가능하다.

이번 포스팅에서는 간단한 개념만 정리해보고 IaC에 대한 이해를 중심으로한 포스팅을 진행했다. 

 

이후 같은내용을 다루는 2번째 포스팅에서는 IaC환경에서 어떻게 aws 리소스를 프로비저닝하는지에 대해 다루어 볼까한다.

 

반응형

댓글