1. Terraform Plan 개요
1.1 Plan 명령어의 목적
- Terraform plan은 인프라 변경사항을 실제로 적용하기 전에 미리 확인할 수 있게 해주는 핵심 명령어입니다.
- plan을 실행하면 Terraform은 다음과 같은 작업을 수행합니다:
- 현재 인프라의 상태를 확인하여 Terraform 상태 파일을 최신화
- 현재 구성과 이전 상태를 비교하여 차이점 분석
- 원격 인프라를 구성과 일치시키기 위한 변경 작업 제안
1.2 Plan의 중요성
정보
plan 명령어는 제안된 변경사항을 실제로 적용하지 않습니다. 이는 변경사항을 적용하기 전에 검토하고 팀과 공유할 수 있게 해주는 안전장치입니다.
2. 기본 사용법
2.1 기본 명령어
terraform plan
이 명령어는 현재 작업 디렉토리에서 루트 모듈 구성을 찾아 실행 계획을 생성합니다.
2.2 계획 파일 저장
terraform plan -out=plan.tfplan
팁
계획 파일을 저장하면 나중에 정확히 같은 변경사항을 apply할 수 있습니다. CI/CD 파이프라인에서 특히 유용합니다.
3. 특수 계획 모드
3.1 삭제 모드 (Destroy Mode)
terraform plan -destroy
- 이 모드는 현재 존재하는 모든 원격 객체를 삭제하기 위한 계획을 생성합니다.
- 개발 환경과 같이 일시적인 인프라를 관리할 때 유용합니다.
3.2 새로고침 전용 모드 (Refresh-Only Mode)
terraform plan -refresh-only
경고
이 모드는 Terraform v0.15.4 이상에서만 사용할 수 있습니다.
Terraform 외부에서 발생한 인프라 변경사항을 상태 파일에 반영할 때 사용합니다.
4. 고급 옵션
4.1 변수 설정
# 단일 변수 설정
terraform plan -var 'environment=production'
# 변수 파일 사용
terraform plan -var-file="prod.tfvars"
4.2 리소스 타겟팅
terraform plan -target=aws_instance.example
경고
-target 옵션은 특별한 상황에서만 사용해야 합니다. 일상적인 작업에서는 권장되지 않습니다.
4.3 상세 종료 코드 활성화
terraform plan -detailed-exitcode
종료 코드로 계획 결과를 파악할 수 있습니다:
- 0: 변경사항 없음
- 1: 오류 발생
- 2: 변경사항 있음
5. 실무 활용 팁
5.1 자동화 환경에서의 사용
terraform plan -input=false -lock-timeout=20s
CI/CD 파이프라인에서 사용할 때는 다음 옵션들을 고려하세요:
-input=false
: 사용자 입력 비활성화-lock-timeout
: 상태 파일 잠금 타임아웃 설정-no-color
: 색상 출력 비활성화
5.2 보안 고려사항
위험
plan 파일에는 민감한 데이터가 평문으로 저장될 수 있습니다. plan 파일을 안전하게 관리하고 공유해야 합니다.
6. 마치며
- Terraform plan은 인프라 변경사항을 안전하게 관리할 수 있게 해주는 강력한 도구입니다.
- 기본적인 사용법부터 시작해서 다양한 옵션들을 상황에 맞게 활용한다면, 더욱 안정적인 인프라 관리가 가능할 것입니다.
팁
실제 변경사항을 적용하기 전에는 항상 plan 결과를 신중하게 검토하는 습관을 들이세요. 특히 프로덕션 환경에서는 더욱 중요합니다.