인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

제로콜라 함 즐길까님의 프로필 이미지

작성한 질문수

테라폼 시작하기

루트 모듈 구성

해결된 질문

작성

·

65

·

수정됨

1

안녕하세요. "DevOps와 SE를 위한 리눅스 커널 이야기"를 완독하고 저자님의 성함을 잊지 않았던걸까 테라폼 강의가 업로드 되자마자 신나게 수강을 했습니다.

덕분에 테라폼을 보다 쉽게 익힐 수 있었고 무엇보다 공식문서를 잘 읽어가며 새로운 리소스를 구성할 때 마다 참고하게 되는 습관이 생긴 것 같아요👍

그래서 감사하다는 말씀 먼저 드리면서 궁금사항을 남겨봅니다.

 

 

질문 배경

실습을 끝까지 마쳤다면 폴더구조는 이런 상태입니다.

  • modules

    • vpc

      • main.tf

      • outputs.tf

      • variables.tf

  • vpc

    • oimarket-apne2

      • ...

         

  • ec2

    • bastion

      • ...

         

워크 플로우

  • cd ec2/bastion || cd vpc/oimarket-apne2

  • terraform plan - apply

질문 내용

테라폼 구성을 위해 각 리소스 디렉터리에 접근 하여 워크플로우를 실행 하게 되는데 이렇게 개별적으로 관리하는것중앙 집약적 관리 중 어떤 방향이 Best Practice일까요?

제가 생각하는 루트 모듈 구성은 이렇습니다.

  • main.tf

  • variables.tf

  • outputs.tf

  • modules

    • vpc

      • ...

    • ec2

      • ...

 

답변 2

1

강진우님의 프로필 이미지
강진우
지식공유자

질문 감사합니다. ^^

개별적 관리와 중앙 집약적 관리가 정확히 어떤 걸 의미하는지 모르겠지만 우선 본 강의에서 예제로 사용하고 있는 구조 (이하 1번 구조라고 칭하겠습니다.) 와 S3ymphony 님이 생각하시는 구조 (이하 2번 구조라고 칭하겠습니다.) 중 어떤 게 베스트 프랙티스인지 문의 하신 걸로 이해했습니다.

모듈은 말 그대로 모듈이기 때문에 이곳 저곳에서 확장성 있게 사용 될 수 있어야 하고, 다른 모듈과의 조합을 통해 구성을 효율적으로 사용할 수 있어야 합니다. 사실 그걸 달성할 수 있다면 구조는 큰 문제가 되진 않습니다.

예를 들면 아래와 같은 구조도 가능하겠죠.



모듈만 잘 나눠져 있다면 그걸 사용하는 구조는 어떻게 되어도 괜찮다는 이야기 입니다.

다만 2번 구조의 경우 vpc 모듈과 ec2 모듈을 다른 코드에서 사용하려면 어떻게 할 수 있을지 확장성이 잘 안보이긴 합니다. 이미 최상단에 main.tf 파일이 위치해 있어서 하단에 있는 모듈을 사용하게 한다면 그 모듈을 사용할 또 다른 main.tf는 어디에 있는게 좋을지는 결정하기 어려워 보이긴 합니다.

제로콜라 함 즐길까님의 프로필 이미지

감사합니다!!

답변을 곱씹으며 읽다보니 너무 확실한 가이드라인을 제시 해주셔서 확실하게 방향성을 잡고 갈 수 있을 것 같습니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. S3ymphony님!

테라폼을 사용한 인프라 관리에 대해 잘 배우고 계신 것 같아 기쁩니다. 공식문서를 참조하는 좋은 습관을 기르셨다고 하니 앞으로 더욱 빠르게 성장하실 수 있을 것입니다.

질문에 대한 답변

테라폼 프로젝트 구성에 있어 “모듈화”와 “중앙 집중화”는 여러 면에서 중요합니다. 각 방식이 보유한 장점이 있으므로 프로젝트의 규모, 팀의 협업 방식, 관리의 복잡성에 따른 전략적 선택이 필요합니다:

  1. 개별 모듈 관리:

    • 모듈별로 개별 디렉토리에서 관리하는 방식입니다. 각 모듈이 독립적으로 관리될 수 있어 더 직관적이고 변경이 필요한 부분에만 집중할 수 있습니다.
    • 이 방식은 특정 리소스 변경이나 관리가 필요한 경우 신속하게 반영할 수 있으며, 테스트 및 디버깅이 명확해집니다.
  2. 중앙 집약적 관리:

    • 단일 루트 디렉토리에서 모든 리소스를 관리합니다. 이 방식은 전체 인프라에 대한 통합 관리와 일관성 유지가 용이합니다.
    • 복잡한 인프라 구성 시, 변경 사항을 보다 체계적으로 관리할 수 있고 의존성 관리가 용이할 수 있습니다.

Best Practice 추천

일반적으로 권장되는 접근 방식은, 모듈화를 통해 개별 관리를 하면서 기본적으로 하나의 중앙 디렉토리에서 최종 배포와 상태 관리를 수행하는 것입니다. 이를 통해 독립적인 관리의 장점과 함께 중앙 관리의 효율성까지 얻을 수 있다는 점에서 효과적입니다.

이와 관련된 유사한 질문 및 지식공유자의 답변은 다음의 링크를 참고해주세요:
- Terraform and Infrastructure as Code Best Practices - 다른 강의의 테라폼 실습에 대한 모듈화와 관리 방법의 논의가 포함되어 있습니다.

테라폼과 같은 IaC(Infrastructure as Code) 툴은 지속적인 학습과 실제 환경에서의 실험을 통해 더 깊은 이해를 얻을 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.