코드 구조와 이름 지정 규칙
Terraform 파일과 모듈을 구성하는 모범 사례와 리소스 및 변수에 일관된 이름 지정 규칙을 적용합니다.
코드 구조와 이름 지정 규칙은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
테라폼 코드를 구조화하는 이유
물리적인 작업 공간을 정리하는 것처럼 테라폼 코드를 구조화하면 코드를 더 쉽게 이해하고 관리하며 공동 작업할 수 있습니다.
구조를 잘 정리하면 가독성이 향상되고 오류가 줄어들며, 새로운 팀원이 빠르게 업무에 적응할 수 있습니다.
필수 테라폼 파일
테라폼 프로젝트는 일반적으로 몇 가지 핵심 파일로 시작합니다. 구성을 이러한 파일로 나누어 정리하는 것은 일반적인 권장 방법입니다.
main.tf: 리소스와 모듈을 정의합니다.variables.tf: 모든 입력 변수를 선언합니다.outputs.tf: 인프라에서 출력되는 값을 정의합니다.versions.tf: 테라폼 및 프로바이더 버전을 지정합니다.
리소스 이름 지정하기
일관된 이름을 사용하면 리소스를 쉽게 식별할 수 있습니다. 지역 이름(예: resource "aws_instance" "my_instance"의 my_instance)에는 다음과 같은 일반 지침을 따르세요.
- 설명적인 이름 사용하기: 이 리소스는 어떤 작업을 수행하나요?
- 하이픈 또는 밑줄 사용하기: 가독성을 높일 수 있습니다(예:
web-server-sg또는web_server_sg). - 일반적인 이름 피하기:
server보다app-frontend-server가 더 유용합니다.
테라폼의 지역 리소스 이름은 하나의 모듈 안에서 고유해야 합니다.
변수 명명 규칙
변수를 사용하면 구성을 유연하게 만들 수 있습니다. 변수 이름을 잘 지정하는 것이 중요합니다.
- 소문자와 밑줄 사용하기: 가장 일반적인 규칙입니다(예:
instance_type,vpc_id). - 구체적으로 작성하기: 이 변수는 무엇을 제어하나요?
- 설명 추가하기: 명확하게 이해할 수 있도록 변수의 목적을 설명하세요.
변수 이름을 잘 지정하면 다른 사람이 모듈에서 어떤 입력을 예상하는지 이해하는 데 도움이 됩니다.
출력 값 이름 지정하기
출력은 배포된 인프라에 대한 중요한 정보를 외부에 제공합니다. 일관된 이름을 사용하면 이를 사용하는 사람이 쉽게 이해할 수 있습니다.
- 소문자와 밑줄 사용하기: 변수와 비슷한 방식으로 지정합니다(예:
web_server_ip). - 값을 설명하는 이름 사용하기: 어떤 정보를 제공하나요?
- 설명 추가하기: 모듈의 출력이 무엇을 반환하는지 설명하는 데 필수적입니다.
예제: 단순한 구성
이 완전한 main.tf 파일은 리소스, 변수 및 출력에 적절한 이름을 지정하는 방법을 보여 줍니다. 이 파일로 terraform init과 terraform plan을 실행할 수 있습니다.
terraform {
required_providers {
null = {
source = "hashicorp/null"
version = "~> 3.0"
}
}
}
resource "null_resource" "example_web_server" {
# Descriptive resource name
triggers = {
always_run = timestamp()
}
}
variable "app_environment" {
description = "The application's deployment environment (e.g., dev, prod)."
type = string
default = "development"
}
output "resource_unique_id" {
description = "The unique ID of the example null resource."
value = null_resource.example_web_server.id
}테라폼 모듈 구조화하기
재사용 가능한 구성 요소인 모듈은 자체적으로 명확한 구조를 갖습니다.
- 루트 모듈: 기본 구성이 포함된 최상위 디렉터리입니다.
- 하위 모듈: 각각 자체
main.tf,variables.tf,outputs.tf등을 포함하는 하위 디렉터리입니다. - README.md: 모듈의 목적, 입력 및 출력을 설명하는 데 필수적입니다.
이렇게 하면 모듈이 독립적으로 구성되어 쉽게 재사용할 수 있습니다.
프로젝트 폴더 구성하기
파일뿐 아니라 프로젝트 폴더를 구성하는 방식도 중요하며, 특히 규모가 큰 환경에서는 더욱 그렇습니다.
- 환경 분리하기:
dev,staging,prod를 위한 전용 폴더를 각각 만들고, 각 폴더에 자체 구성을 둡니다. - 공통 모듈 폴더: 직접 만든 재사용 가능한 모듈을 위한
modules디렉터리입니다. - 프로바이더용 루트 폴더: 최상위 폴더에서 일반적으로 프로바이더와 상태 백엔드를 정의합니다.
이렇게 하면 환경 간 구성 드리프트를 방지하고 관리 편의성을 높일 수 있습니다.
프로젝트 폴더 예제
일반적인 다중 환경 테라폼 프로젝트는 다음과 같은 형태로 구성할 수 있으며, 환경을 명확히 분리하고 재사용성을 높일 수 있습니다.
.
├── modules/
│ ├── vpc/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── outputs.tf
│ └── ec2-instance/
│ ├── main.tf
│ └── variables.tf
├── environments/
│ ├── dev/
│ │ └── main.tf
│ ├── staging/
│ │ └── main.tf
│ └── prod/
│ └── main.tf
└── README.md이해도 확인
인스턴스 수를 지정하는 테라폼 입력 변수의 이름을 정할 때 다음 중 가장 좋은 방법은 무엇인가요?
복습: 구조와 명명
구조를 잘 정리하고 일관된 이름을 사용하는 테라폼 코드는 가독성, 유지 관리 편의성 및 팀 공동 작업에 매우 중요하다는 것을 배웠습니다.
- 파일을
main.tf,variables.tf,outputs.tf로 나누어 정리합니다. - 리소스, 변수 및 출력에는 설명적인 소문자와 밑줄 조합의 이름을 사용합니다.
- 재사용성과 환경 분리를 고려하여 모듈과 프로젝트 폴더를 구성합니다.
이러한 방법은 효과적인 코드형 인프라 관리의 토대가 됩니다!
자주 묻는 질문
“코드 구조와 이름 지정 규칙” 강의는 무료인가요?
네 — “코드 구조와 이름 지정 규칙” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“코드 구조와 이름 지정 규칙”에서 뭘 배우나요?
Terraform 파일과 모듈을 구성하는 모범 사례와 리소스 및 변수에 일관된 이름 지정 규칙을 적용합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“코드 구조와 이름 지정 규칙” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 코드 구조와 이름 지정 규칙
- Git으로 버전 관리
- 팀 협업과 작업 흐름
- 문서화 및 셀프 서비스 작업 흐름