state에서 리소스 제거하기
state에서 리소스 제거하기 (Remove a resource from state)
리소스를 파괴하지 않고 테라폼 state에서 제거하려면, resource 블록을 removed 블록으로 바꾼 다음 표준 테라폼 워크플로우로 변경 사항을 적용하면 돼요. 리소스를 state에서 제거하면 테라폼이 더 이상 그 인프라의 생명주기(lifecycle)를 관리하지 않아요. 리소스를 state에서 제거하면서 실제 인프라까지 파괴하는 방법은 리소스 파괴하기를 참고하세요.
출처: 문서
본문
다음 단계를 따라서 진행해요.
-
구성에서
resource블록을removed블록으로 바꿔요. -
removed블록에서 다음 인자를 구성해요.-
제거하려는 리소스의 주소를
from인자에 지정해요. 리소스가 여러 인스턴스를 프로비저닝하도록 구성된 경우"aws_instance.example[1]"같은 인스턴스 키는 포함할 수 없어요. -
removed블록에lifecycle블록을 추가하고destroy인자를false로 설정해요.destroy를true로 설정하면 리소스를 state에서 제거하면서 파괴해요. 자세한 내용은 리소스 파괴하기를 참고하세요.
-
-
리소스의 속성에 대한 모든 참조를 삭제해요.
terraform validate명령을 실행하면 구성에서 참조를 찾을 수 있어요. -
terraform apply를 실행하고, 프롬프트가 나타나면 진행할 것임을 확인해요.
다음 예제는 aws_instance.example 리소스를 state에서 제거하지만 파괴하지는 않아요.
removed {
from = aws_instance.example
lifecycle {
destroy = false
}
}
대안으로 terraform state rm 명령으로 리소스를 state에서 제거할 수도 있어요. 하지만 removed 블록을 사용하는 것을 권장해요. removed 블록은 작업 결과를 미리 볼 수 있어서 리소스 제거를 더 안전하게 만들기 때문이에요.
리소스를 다시 테라폼으로 관리하고 싶다면 그 리소스를 구성으로 다시 가져와야(import) 해요. 자세한 내용은 기존 리소스 가져오기를 참고하세요.
더 알아보기 (Learn more)
- 기존 리소스 가져오기 — import 사용법.
terraform state rm명령 — CLI에서 state 리소스 제거.terraform validate명령 — 구성 검증.