서론
아래에 글은 공식문서를 공부하며 정리한 내용입니다.
참고
이전에 Terraform을 사용하여 AWS에서 EC2 인스턴스를 생성하고 업데이트했음. 이제 Terraform을 사용하여 이 인프라를 destory 해보자.
인프라가 더 이상 필요하지 않으면 보안 노출 및 비용을 줄이기 위해 인프라를 제거할 수 있음. 예를 들어, 서비스에서 프로덕션 환경을 제거하거나 빌드 또는 테스트 시스템과 같은 수명이 짧은 환경을 관리할 수 있음. 인프라 구축 및 수정 외에도 Terraform은 관리하는 인프라를 파괴하거나 다시 생성할 수 있음.
terraform destroy
명령어는 Terraform 프로젝트에서 관리하는 리소스를 terminate함. 이 명령어는 Terraform state에 지정된 모든 리소스를 종료한다는 점에서 terraform apply
와 반대임. 현재 Terraform 프로젝트에서 관리하지 않는 다른 곳에서 실행 중인 리소스는 삭제하지 않음.
이제, 생성했던 리소스를 삭제하자.
$ terraform destroy
aws_instance.app_server: Refreshing state... [id=i-07ff472fe3fed27d9]
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the
following symbols:
- destroy
Terraform will perform the following actions:
# aws_instance.app_server will be destroyed
- resource "aws_instance" "app_server" {
- ami = "ami-035233c9da2fabf52" -> null
...
- volume_id = "vol-067084023c38de6b6" -> null
- volume_size = 8 -> null
- volume_type = "gp2" -> null
}
}
Plan: 0 to add, 0 to change, 1 to destroy.
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
aws_instance.app_server: Destroying... [id=i-07ff472fe3fed27d9]
aws_instance.app_server: Still destroying... [id=i-07ff472fe3fed27d9, 10s elapsed]
aws_instance.app_server: Destruction complete after 11s
Destroy complete! Resources: 1 destroyed.
-
접두사는 인스턴스가 삭제됨을 나타냄. apply와 마찬가지로 Terraform은 execution plan을 표시하고 변경하기 전에 승인을 기다림. yes
를 입력하여 수행을 진행하자.
apply와 마찬가지로 Terraform은 리소스를 제거할 순서를 결정함. 이 경우 Terraform은 다른 종속성이 없는 단일 인스턴스를 식별하여 인스턴스를 삭제함. 리소스가 여러 개의 더 복잡한 경우 Terraform은 종속성을 고려하기 위해 적절한 순서로 리소스를 제거하게 됨.
삭제 확인