피드로 돌아가기
Dev.toDevOps
원문 읽기
To The Moon Terraform Ep.3
HashiCorp이 Terraform의 Variables와 Locals를 활용해 하드코딩된 설정을 제거하고 단일 블루프린트로 다중 환경 배포 가능
AI 요약
Context
인프라 코드에서 하드코딩된 설정값(예: us-east-1, t3.micro)은 환경이나 미션 파라미터가 변경될 때마다 코드의 여러 위치를 수정해야 한다. 이는 설정 변경 시 블루프린트 전체가 깨지는 구조이다.
Technical Solution
- Input Variables 선언: aws_region, mission_name, environment, instance_type, crew_count, mission_config 등을 변수로 정의하고 검증 규칙(validation) 적용
- 변수 타입 지정: string, number, bool, list(string), map(string), set(string), object({...}) 등으로 타입 안정성 확보
- 변수값 우선순위 적용: 기본값(default) → 환경변수 → tfvars 파일 → CLI 플래그 순서로 덮어쓰기 가능
- Locals 활용: 변수로부터 파생 값(name_prefix, common_tags, 조건부 ami_id) 계산하고 반복 계산 최적화
- 리소스 참조 통합: 리소스 정의에서 var.instance_type, local.common_tags 같은 동적 참조로 중복 제거
Impact
아티클에 정량적 수치가 명시되지 않음.
Key Takeaway
단일 Terraform 블루프린트를 입력 변수와 로컬 계산으로 설계하면, 코드 수정 없이 환경(시뮬레이션/스테이징/프로덕션), 리전, 인스턴스 타입만 변경하여 다중 미션을 배포할 수 있다. 이는 Saturn V 로켓처럼 '설계는 고정하고 파라미터만 변수화'하는 엔지니어링 원칙을 인프라스트럭처 코드에 적용한 것이다.
실천 포인트
Terraform을 사용하는 팀에서 리소스 배포 시 region, instance_type, environment 같은 파라미터를 Input Variable로 선언하고, name_prefix, ami_id 같은 파생값을 Locals에서 계산하면, 동일한 .tf 파일로 simulation/staging/production 3개 환경을 각각 배포할 때 파일 수정 없이 tfvars 파일이나 CLI 플래그만 변경하여 운영할 수 있다.