1. Terraform 프로젝트 이해하기
1.1 프로젝트란?
- Terraform 프로젝트는 인프라를 코드로 정의하는 파일들의 집합입니다.
- 마치 웹 개발 프로젝트가 HTML, CSS, JavaScript 파일로 구성되듯이, Terraform 프로 젝트는 여러
.tf
파일들로 구성됩니다.
1.2 기본 디렉토리 구조
my-terraform-project/
├── main.tf # 주요 리소스 정의
├── variables.tf # 변수 선언
├── terraform.tfvars # 변수 값 정의
├── outputs.tf # 출력값 정의
├── providers.tf # 프로바이더 설정
└── versions.tf # 버전 제약 조건
- 각 파일의 역할:
main.tf
: 실제로 생성할 인프라 자원을 정의하는 메인 파일variables.tf
: 프로젝트에서 사용할 변수들을 선언terraform.tfvars
: 선언된 변수들의 실제 값을 지정outputs.tf
: 인프라 생성 후 필요한 값들을 출력하도록 정의providers.tf
: AWS, Azure 등 사용할 클라우드 공급자 설정versions.tf
: Terraform과 프로바이더의 버전 관리
2. 변수 시스템 이해하기
2.1 변수가 필요한 이유
예를 들어 EC2 인스턴스를 생성하는 코드를 봅시다:
# 변수 사용 없이 직접 값을 입력한 경우
resource "aws_instance" "server" {
ami = "ami-1234567890"
instance_type = "t2.micro"
tags = {
Name = "production-server"
}
}
이 코드의 문제점:
- 개발 환경과 운영 환경에서 다른 인스턴스 타입을 사용하고 싶다면?
- 다른 리전에서 다른 AMI ID를 사용해야 한다면?
- 여러 곳에서 같은 값을 반복해서 사용한다면?
이러한 문제를 해결하기 위해 변수 시스템을 사용합니다.