본문 바로가기
AWS/Part 4. Ch02 테라폼을 이용한 인프라 관리

CH02_05. 테라폼 HCL module

by Engineer-Lee 2022. 6. 2.
반응형

테라폼 모듈은 테라폼 코드 상에서 하나의 블록으로 작성된 코드 그룹을 재사용할 수 있다.

 

아래 링크에는 테라폼 모듈별로 코드가 있고

https://github.com/tedilabs

 

Tedilabs

Design the world with technology. Tedilabs has 18 repositories available. Follow their code on GitHub.

github.com

 

다음 링크에 각 강의에 대한 코드가 있다.

https://github.com/tedilabs/fastcampus-devops/tree/main/2-terraform

 

GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료

🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.

github.com

 

모듈 부분의 코드를 살펴보자

일단 module 지시어를 사용하고 모듈 블록 레이블로 모듈의 이름을 "vpc"로 정했다.

그 후 "vpc" 모듈의 소스와 버전을 명시했고 vpc의 이름과 cidr block영역을 설정했다.

그리고 인터넷 게이트웨이를 생성하도록 했고 dns 호스트와 서포트 기능을 활성화했다.

 

모듈은 어떤 소스에 있는 모듈을 이용하는지에 따라 설정이 다르다. 

예를 들어 local paths는 소스만 입력하면 되고 terraform registry와 github는 소스와 버전 모두 입력해야 한다.

 

아래 링크에는 테라폼 모듈의 소스에 따라 어떻게 설정하는지에 대한 설명이 있다.

이중 주로 local paths, terraform registry, github로 부터 소스를 많이 가져온다.

https://www.terraform.io/language/modules/sources

 

Module Sources | Terraform by HashiCorp

The source argument tells Terraform where to find child modules's configurations in locations like GitHub, the Terraform Registry, Bitbucket, Git, Mercurial, S3, and GCS.

www.terraform.io

 

 

 

 

 

다음으로 public과 private subnet group의 모듈 코드를 보자

name에서 ${module.vpc.name}은  "vpc" 모듈의 이름인 "fastcampus"이다.

public subnet에서는 public ip가 자동으로 할당되도록 했고 az1과 az2에 각각의 서브넷이 생성되도록 설정했다.

private subnet에서는 public ip가 할당되지 않도록 했고 az1과 az2에 각각의 서브넷이 생성되도록 설정했다.

 

 

마지막으로 public, private route table에 대한 코드를 보자

public subnet들의 id를 public route table에 연결시켰고

private에서도 마찬가지로 설정했다.

 

그리고 public부분을 보면 0.0.0.0/0 라우트에 대해서는 vpc module에서 생성하는 인터넷 게이트웨이로 트래픽을 보내도록 설정했다.

private부분에서는 nat 게이트웨이나 nat인스턴스 등과 같은 outgoing 트래픽에 대해서만 인터넷 통신을 허용하도록 한다.

여기서는 nat 게이트웨이나 nat 인스턴스가 과금이 되는 서비스이므로 해당 라우팅 규칙을 생성하지 않고 인터넷 트래픽이 아예 흐르지 않도록 했다.

 

실제로 인프라에 반영하기 위해 terraform init, apply를 해보면 잘 생성되는 걸 볼 수 있다.

public route table을 보면 0.0.0.0/0에 대해 인터넷 게이트웨이가 연결된 걸 볼 수 있다.

반응형