terraform untaint 명령

terraform untaint 명령

terraform untaint 명령은 객체에 붙어 있는 tainted 마커를 제거해서, 다음 플랜에서 그 객체를 교체하지 않도록 하는 명령이에요. 객체가 실제로는 정상 동작하는데 Terraform이 오염된 것으로 오판하고 있을 때 유용해요.

출처: 문서

본문

소개 (Introduction)

Terraform에는 tainted라는 마커가 있는데, 객체가 손상되었을 수 있어 향후 Terraform 플랜에서 교체해야 한다는 사실을 추적하는 데 사용돼요.

다단계 "create" 작업 중에 오류가 발생하면 Terraform은 객체가 완전히 기능하는 상태로 남아 있다고 확신할 수 없기 때문에, 해당 객체를 자동으로 "tainted"로 표시해요.

또한 더 이상 권장하지 않는 명령인 terraform taint를 사용해 객체를 수동으로 "tainted"로 표시할 수도 있어요.

Terraform이 특정 객체를 현재 tainted로 간주하지만, 실제로는 제대로 작동하고 있어 교체할 필요가 없다고 판단했다면, terraform untaint을 사용해 그 객체에서 taint 마커를 제거할 수 있어요.

이 명령은 실제 원격 객체는 수정하지 않지만, tainted 상태를 제거하기 위해 상태는 수정해요.

객체에서 taint 마커를 제거했는데 나중에 역시 성능이 저하된 것을 발견했다면, 객체를 다시 taint하지 않고도 다음과 같은 명령으로 교체 플랜을 만들어 적용할 수 있어요:

terraform apply -replace="aws_instance.example[0]"

사용법 (Usage)

사용법: terraform untaint [options] address

address 인자는 현재 tainted인 특정 리소스 인스턴스를 식별하는 리소스 주소예요.

이 명령은 다음 옵션도 받아들여요:

  • -allow-missing - 지정하면 리소스가 없어도 명령이 성공(종료 코드 0)해요. 상태를 읽거나 쓰는 데 문제가 있는 경우처럼 다른 상황에서는 여전히 오류를 반환할 수 있어요.
  • -lock=false - 작업 중에 상태 락을 보유하지 않아요. 다른 사람들이 같은 워크스페이스에 대해 동시에 명령을 실행할 수 있다면 위험해요.
  • -lock-timeout=DURATION - -lock=false로 락을 비활성화하지 않는 한, 오류를 반환하기 전에 일정 기간 동안 락 획득을 재시도하도록 Terraform에 지시해요. duration 문법은 숫자 뒤에 시간 단위 문자를 붙인 형태로, 3초는 "3s"처럼 표현해요.
  • -no-color - 출력에서 터미널 포맷 시퀀스를 비활성화해요. 출력이 터미널 포맷을 해석할 수 없는 시스템에서 렌더링되는 상황에서 Terraform을 실행한다면 이 옵션을 사용하세요.

HCP Terraform CLI 통합 또는 remote 백엔드만 사용하는 구성의 경우 terraform untaint-ignore-remote-version 옵션도 받아들여요.

로컬 백엔드만 사용하는 구성의 경우 terraform untaint은 레거시 옵션 -state, -state-out, and -backup도 받아들여요.

더 알아보기 (Learn more)