재사용 가능한 모듈 만들기
입력, 출력, 리소스를 정의하여 모듈식의 유연한 설정을 구축하는 Terraform 모듈을 직접 작성해 보세요.
재사용 가능한 모듈 만들기은(는) CoddyKit의 무료 Terraform Infrastructure as Code 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Terraform Infrastructure as Code 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.
나만의 Terraform 모듈 만들기
이전 레슨에서는 기존 Terraform 모듈을 사용하는 방법을 학습했습니다. 이제 직접 재사용 가능한 모듈을 만드는 방법을 자세히 살펴보겠습니다!
모듈을 작성하면 일반적인 인프라 패턴을 캡슐화할 수 있어 구성이 더 깔끔하고 일관되며 유지 관리하기 쉬워집니다.
모듈 파일 구성하기
Terraform 모듈은 기본적으로 전용 디렉터리에 저장된 .tf 파일 모음입니다.
가장 단순한 모듈 디렉터리에는 다음 파일이 포함됩니다.
variables.tf: 모듈의 입력 변수를 정의합니다.main.tf: 실제 리소스 선언을 포함합니다.outputs.tf: 모듈의 출력 값을 정의합니다.
공급자 요구 사항에 필요한 versions.tf와 문서 작성을 위한 README.md도 포함할 수 있습니다.
모듈 입력: 변수
모듈을 유연하게 만들려면 입력 변수를 정의해야 합니다. 입력 변수를 사용하면 모듈의 핵심 코드를 변경하지 않고도 모듈 사용자가 모듈의 동작을 사용자 지정할 수 있습니다.
변수는 variable 블록을 사용하여 정의하며, description, type, 선택적 default 값을 지정합니다.
예제: 모듈 변수 정의
모듈의 variables.tf 파일에서 인스턴스 유형 변수를 정의하는 방법은 다음과 같습니다.
# variables.tf
variable "instance_type" {
description = "The EC2 instance type to use."
type = string
default = "t2.micro"
}모듈 리소스: 핵심 로직
모듈의 핵심은 리소스 선언입니다. 리소스 선언은 모듈이 프로비저닝할 실제 클라우드 리소스입니다.
AWS EC2 인스턴스나 S3 버킷 같은 리소스 블록을 모듈의 main.tf 파일에 배치합니다.
중요한 점은 모듈 내 리소스가 앞에서 정의한 입력 변수를 사용하는 경우가 많다는 것입니다.
입력을 사용한 리소스 선언
instance_type 변수를 사용하여 main.tf에 EC2 인스턴스를 선언해 보겠습니다.
# main.tf
resource "aws_instance" "web_server" {
ami = "ami-0abcdef1234567890" # Example AMI ID
instance_type = var.instance_type
tags = {
Name = "MyWebServer"
}
}모듈 출력: 정보 공유
모듈은 입력을 받는 것뿐만 아니라 출력 값도 제공할 수 있습니다. 출력 값은 모듈이 생성한 리소스에 관한 정보를 내보낼 때 유용합니다.
예를 들어 EC2 인스턴스의 퍼블릭 IP 주소나 S3 버킷의 ARN을 출력할 수 있습니다.
출력은 outputs.tf에서 output 블록을 사용하여 정의합니다.
모듈 출력값 정의
outputs.tf에서 EC2 인스턴스의 공용 IP에 대한 출력을 정의하는 방법은 다음과 같습니다.
# outputs.tf
output "instance_public_ip" {
description = "The public IP address of the EC2 instance."
value = aws_instance.web_server.public_ip
}새 모듈 호출
모듈을 정의한 후에는 다른 모듈과 마찬가지로 루트 구성(또는 다른 모듈)에서 사용할 수 있습니다.
source(모듈 디렉터리의 경로)를 지정하고 입력 변수에 값을 전달하면 됩니다.
# root_config/main.tf
module "my_web_server_module" {
source = "../my-ec2-module" # Path to your module
instance_type = "t3.small" # Override default
}
output "web_server_ip" {
value = module.my_web_server_module.instance_public_ip
}모듈 구성 요소 확인
Terraform 모듈의 주요 파일에 대해 배웠습니다. 모듈에 입력으로 전달할 수 있는 값을 정의하는 데 주로 사용되는 파일은 무엇인가요?
복습: 재사용 가능한 모듈 작성
잘하셨습니다! 이제 직접 Terraform 모듈을 작성하는 방법을 알고 계십니다.
- 모듈은
.tf파일이 들어 있는 디렉터리입니다. - 입력에는
variables.tf를 사용합니다. - 리소스 정의는
main.tf에 배치합니다. - 데이터를 외부에 제공하려면
outputs.tf에 출력을 정의합니다.
이 기술은 확장 가능하고 유지 관리하기 쉬우며 일관된 코드형 인프라를 구축하는 데 매우 중요합니다.
자주 묻는 질문
“재사용 가능한 모듈 만들기” 강의는 무료인가요?
네 — “재사용 가능한 모듈 만들기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Terraform Infrastructure as Code 강의 전체를 잠금 해제할 수 있습니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.
“재사용 가능한 모듈 만들기”에서 뭘 배우나요?
입력, 출력, 리소스를 정의하여 모듈식의 유연한 설정을 구축하는 Terraform 모듈을 직접 작성해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Terraform Infrastructure as Code을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Terraform Infrastructure as Code을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Terraform Infrastructure as Code은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“재사용 가능한 모듈 만들기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Terraform Infrastructure as Code 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Terraform Infrastructure as Code 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Terraform 모듈 소개
- 재사용 가능한 모듈 만들기
- 환경에 작업 공간 사용
- 레지스트리에 모듈 게시하기