끄적이는 보송

[AWS] Terraform 구조 본문

STUDY/Terraform

[AWS] Terraform 구조

끄적이는 보송 2021. 7. 4. 20:19
반응형

 

 

Terraform은 Hashicorp에서 오픈소스로 개발한 인프라관리 Tool 이며 Infrastructure as Code (IaC)를 지향한다고 한다. 필자는 AWS 클라우드만 다루며 다른 벤더사는 잘 모른다. 이런 상황에 만약 Azure로 기존의 인프라를 옮긴다면...? 대재앙이다. 필자는 Vendor-lock-in 그 자체다. 멀티 클라우드를 지향하는 기업도 슬슬 생기고 있고 이 모든 것을 품을 수 있는게 테라폼인듯 하여 공부해보려 한다.

 

 

 

 

Terraform 사용 방법

Terraform은 CLI와 HCL (Harshicorp Language)를 제공하며 이들을 알 필요가 있다. Terraform 사용 절차는 다음과 같다.

 

API set up > Terraform Write > Terraform Plan > Terraform Apply

-> API set up : AWS(벤더)의 계정과 키를 통해 CLI 환경 구성한다.

 

-> Terraform Write : HCL로 어떤 자원을 어떻게 구성하겠다는 테라폼 소스 코드를 작성한다. 확장자는 .tf 이다.

 

-> Terraform Plan : 작성한 코드가 생성 가능한지 혹은 어떤 리소스가 생성되고, 수정되고, 제거되는지 보여준다.

 

-> Terraform Apply : 작성한 코드를 바탕으로 실제 인프라에 적용한다.

 

 

 

 

Terraform 구조

 

모듈은 리소스의 컨테이너와 같으며 테라폼 구성을 패키징하고 재사용하기 위한 주요 수단이다. 모듈에는 3가지가 있다.

 

-> The Root Module : 테라폼은 적어도 하나 이상의 모듈로 구성되어 있으며 .tf 확장자 이름으로 여러 리소스가 명시되어 있다.

 

-> Child Module : 루트 이외에 인프라 리소를 구성하고 있는 테라폼의 다른 모듈을 Child Module 이라고 한다. Child  Module은 동일한 구성 내에서 여러번 호출 될 수 있으며, 여러 구성이 동일한 Child Module을 사용 할 수 있다. 다양하게 재상용 및 다중 적용이 가능한다는 뜻.

 

-> Published Module : 로컬 파일시스템의 모듈 이외에 다른 사용자가 사용할 수 있도록 게시한 모듈이다.

 

https://www.terraform.io/docs/language/modules/develop/structure.html

 

Standard Module Structure - Terraform by HashiCorp

Terraform by HashiCorp

www.terraform.io

테라폼의 정해진 표준은 없지만 위의 사이트를 통해 다음의 구조를 참조해보았다.

권장하는 최소 표준 구조의 모듈

-> README / README.md : 모듈에 대한 용도를 설명하는 우리가 모두 아는 그 리드미다.

 

-> Licence : 모듈을 공개적으로 개시한다면 명확한 라이센스 개시를 권자 (필수는 아님) 오픈 소스가 아니더라도 라이센스 보유를 권장한다.

 

-> main.tf, variables.tf, outputs.tf. 확장자 : 권장되는 모듈 이름. 

 

-> Nested Module : module 하위 디렉토리에 위치해야 한다. README.md 로 구성이 된 Nested Module은 외부 사용자가 사용할 수 있는 것으로 간주되며 그렇지 않으면 내부 사용자 전용으로 간주된다. (권장사항)

 

-> Examples : 모듈 사용의 예를 보여주며 루트 하위 디렉토리에 있어야 한다. 목적과 사용법을 설명해야 하는 README가 있고 하위 모듈의 예도 Examples의 디렉토리에 있어야 한다.

 

뭔가 처음에 구조를 잘 잡고 코드를 작성해야 할 것 같다.

반응형

'STUDY > Terraform' 카테고리의 다른 글

[AWS] Terraform으로 간단한 VPC 구성하기  (0) 2021.07.07
[AWS] Terraform 설치 on Windows 10  (0) 2021.07.04
Comments