Terraform 보호 장치

Terraform 보호 장치

저는 이미 프로덕션 환경에서 수십 개의 AWS 인스턴스를 실행하고 있으며 Terraform을 사용하여 다음 인스턴스 생성을 자동화하고 싶습니다. Terraform이 불변 패턴을 연습하는 데 도움이 된다는 것을 읽었습니다. 그러나 이미 실행 중인 인스턴스를 파괴하는 위험은 피하고 싶습니다. Terraform은 이를 방지하기 위한 보호 기능을 제공합니까?

답변1

응 - 사용terraform plan어떤 수술을 하기 전에. 실제로는 포함되지 않고 적용될 변경 사항의 전체 목록을 출력합니다.실행귀하의 검토를 위해 그중 하나를 선택하십시오.

답변2

Terraform에는 이에 대한 명시적인 보호 장치가 없지만 일반적인 설계로 인해 이미 기존 리소스에 접근할 수 없습니다.

일반적으로 모든 Terraform 리소스에는 몇 가지 기본 식별자(예: EC2의 경우 인스턴스 ID, S3의 경우 버킷 이름)가 있습니다. 그리고 모든 Terraform 실행은 a) 새 리소스를 생성하거나 b) Terraform 제어 하에 기존 리소스를 업데이트/삭제해야 합니다.

  • a) ID가 이미 존재하는 경우 오류가 발생하고 Terraform은 아무것도 생성할 수 없습니다(EC2에서는 발생하지 않지만 S3 버킷에서는 가능함). 이는 Terraform 코드를 수정할 수 있는 기회입니다.

  • b) 경우 Terraform은 계정의 기존 콘텐츠를 그대로 두고 "자체" 리소스로만 작동해야 합니다.

리소스를 교체/이름 변경하여 Terraform을 의도적으로(또는 실수로) 방해할 수 있으며, 이로 인해 문제가 발생할 수 있습니다. 그러나 "정상적인" 사용에서는 이런 종류의 문제를 본 적이 없습니다.

답변3

리소스에 수명 주기 구성 블록을 추가할 수 있습니다(Terraform 리소스 구성을 참조하세요.); 특히 다음을 사용하여:

lifecycle {
    prevent_destroy = true
}

계획에 리소스에 대한 삭제 작업이 포함되어 있으면 오류 메시지가 반환됩니다.

관련 정보