state에서 리소스 제거하기

state에서 리소스 제거하기 (Remove a resource from state)

리소스를 파괴하지 않고 테라폼 state에서 제거하려면, resource 블록을 removed 블록으로 바꾼 다음 표준 테라폼 워크플로우로 변경 사항을 적용하면 돼요. 리소스를 state에서 제거하면 테라폼이 더 이상 그 인프라의 생명주기(lifecycle)를 관리하지 않아요. 리소스를 state에서 제거하면서 실제 인프라까지 파괴하는 방법은 리소스 파괴하기를 참고하세요.

출처: 문서

본문

다음 단계를 따라서 진행해요.

  1. 구성에서 resource 블록을 removed 블록으로 바꿔요.

  2. removed 블록에서 다음 인자를 구성해요.

    • 제거하려는 리소스의 주소를 from 인자에 지정해요. 리소스가 여러 인스턴스를 프로비저닝하도록 구성된 경우 "aws_instance.example[1]" 같은 인스턴스 키는 포함할 수 없어요.

    • removed 블록에 lifecycle 블록을 추가하고 destroy 인자를 false로 설정해요. destroytrue로 설정하면 리소스를 state에서 제거하면서 파괴해요. 자세한 내용은 리소스 파괴하기를 참고하세요.

  3. 리소스의 속성에 대한 모든 참조를 삭제해요. terraform validate 명령을 실행하면 구성에서 참조를 찾을 수 있어요.

  4. terraform apply를 실행하고, 프롬프트가 나타나면 진행할 것임을 확인해요.

다음 예제는 aws_instance.example 리소스를 state에서 제거하지만 파괴하지는 않아요.

removed {
  from = aws_instance.example

  lifecycle {
    destroy = false
  }
}

대안으로 terraform state rm 명령으로 리소스를 state에서 제거할 수도 있어요. 하지만 removed 블록을 사용하는 것을 권장해요. removed 블록은 작업 결과를 미리 볼 수 있어서 리소스 제거를 더 안전하게 만들기 때문이에요.

리소스를 다시 테라폼으로 관리하고 싶다면 그 리소스를 구성으로 다시 가져와야(import) 해요. 자세한 내용은 기존 리소스 가져오기를 참고하세요.

더 알아보기 (Learn more)