- Published on
Terraform의 lifecycle 블록은 설계상 리터럴 값만 받습니다. 의존성 그래프를 만드는 단계에서 처리되기 때문에 변수를 평가할 시점이 아직 아니라는 것이 HashiCorp 문서의 설명이고, "변수를 쓰게 해 달라"는 요청은 2016년부터 있었습니다. OpenTofu 1.12(2026년 5월 14일)는 prevent_destroy의 평가를 설정 로더에서 언어 런타임으로 옮겨 이 제약을 풀었고, 같은 릴리스에서 상태에서만 제거하고 실제 객체는 남기는 destroy = false lifecycle 인자를 추가했습니다. 이 글은 두 기능이 실제로 무엇을 허용하고 무엇을 여전히 막는지, 특히 destroy = false는 상수만 받는다는 비대칭과 상태에 눌러앉는다는 성질, prevent_destroy가 동적이 된 뒤에도 여전히 못 막는 구멍, 그리고 Terraform 1.15가 같은 정적 평가 문제를 전혀 다른 자리에서 풀고 있다는 점을 정리합니다. 편을 드는 글이 아니라, 쓰기 전에 알아야 할 제약을 모으는 글입니다.