본문으로 건너뛰기

1. terraform destroy 명령어 소개​

  • terraform destroy는 Terraform으로 관리되는 인프라 리소스를 제거하는 명령어입니다
  • 현재 Terraform 프로젝트에서 관리하는 모든 리소스를 종료합니다
  • 프로젝트 외부의 다른 리소스는 영향받지 않습니다
경고

이 명령어는 되돌릴 수 없는 작업을 수행하므로 매우 신중하게 사용해야 합니다.

2. 실행 계획 검토​

2.1 삭제 계획 출력 예시​

$ terraform destroy
Terraform will perform the following actions:

# aws_instance.app_server will be destroyed
- resource "aws_instance" "app_server" {
- ami = "ami-08d70e59c07c61a3a" -> null
- arn = "arn:aws:ec2:us-west-2:561656980159:instance/i-0fd4a35969bd21710" -> null
...
}

Plan: 0 to add, 0 to change, 1 to destroy.

2.2 계획 해석 방법​

  • - 기호: 삭제될 리소스 표시
  • -> null: 현재 값이 삭제되어 null이 될 것임을 의미
  • 요약 정보: 삭제될 리소스 수 표시

3. 삭제 프로세스​

3.1 삭제 확인​

Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.

Enter a value: yes
  • 안전성을 위해 yes만 허용
  • 신중한 검토 후 확인 필요

3.2 삭제 진행 과정​

aws_instance.app_server: Destroying... [id=i-0fd4a35969bd21710]
aws_instance.app_server: Still destroying... [id=i-0fd4a35969bd21710, 10s elapsed]
aws_instance.app_server: Destruction complete after 31s

Destroy complete! Resources: 1 destroyed.
  • 실시간 진행 상황 표시
  • 리소스별 삭제 시간 표시
  • 최종 삭제 결과 요약

4. 종속성 관리​

4.1 리소스 삭제 순서​

  • Terraform이 자동으로 적절한 삭제 순서 결정
  • 리소스 간 종속성을 고려하여 안전한 순서로 제거
  • 예시 시나리오:
    1. 먼저 EC2 인스턴스 종료
    2. 그 다음 연결된 EBS 볼륨 제거
    3. 마지막으로 보안 그룹 삭제

4.2 종속성 관련 주의사항​

  • 순환 종속성 확인
  • 외부 종속성 고려
  • 수동 개입이 필요한 케이스 식별

5. 안전한 삭제를 위한 전략​

5.1 사전 준비사항​

  • 백업 확인
    • 중요 데이터 백업
    • 상태 파일 복사
  • 영향도 분석
    • 연결된 시스템 확인
    • 사용자 영향 평가

5.2 부분 삭제 옵션​

# 특정 리소스만 삭제
terraform destroy -target=aws_instance.app_server

# 특정 모듈의 리소스만 삭제
terraform destroy -target=module.frontend
팁

-target 옵션을 사용하면 특정 리소스나 모듈만 선택적으로 삭제할 수 있습니다.

6. 실무 활용 팁​

6.1 삭제 전 체크리스트​

  1. 상태 파일 최신 여부 확인
  2. 백업 상태 검증
  3. 종속성 맵 검토
  4. 영향받는 시스템 목록 작성
  5. 롤백 계획 수립

6.2 문제 해결 시나리오​

  • 삭제 실패 시 대응
    • 오류 로그 분석
    • 수동 정리 절차
    • 상태 파일 복구
  • 부분 삭제 실패
    • 종속성 확인
    • 수동 개입 판단

7. 자동화 환경에서의 활용​

7.1 CI/CD 파이프라인 통합​

# 자동화된 환경에서의 사용 예
terraform destroy -auto-approve -var-file=prod.tfvars

7.2 안전장치 구현​

  • 환경별 권한 제한
  • 삭제 금지 태그 설정
  • 감사 로그 활성화

8. 마치며​

  • terraform destroy는 강력하지만 위험할 수 있는 명령어입니다
  • 실행 전 철저한 계획과 검토가 필수적입니다
  • 종속성 관리와 안전한 삭제 전략이 성공적인 운영의 핵심입니다