DevOps/Terraform

Terraform lifecycle

xlwdn98767 2023. 7. 10. 14:23
728x90

수명주기


terraform에서 resource를 선언할 때 블럭 내부에 배치하여 수명주기를 설정할 수 있다. 인수로는 다음 목록들을 입력할 수 있다.

  • create_before_destroy (bool)
    • 리소스 수정 시 수정된 리소스를 먼저 생성. 이후 기존 리소스 삭제
    resource "local_file" "abc" {
    	content = "lifecycle"
    	
    	lifecycle {
    		create_before_destroy = true
    	}	
    }
    
  • prevent_destroy (bool)
    • 해당 리소스를 삭제하려할 때 거부
    resource "local_file" "abc" {
    	content = "lifecycle"
    	
    	lifecycle {
    		prevent_destroy = true
    	}	
    }
    
  • ignore_changes (list)
    • 리소스 요소에 선언된 인수의 변경 사항을 테라폼 실행 시 무시
    resource "local_file" "abc" {
    	content = "lifecycle"
    	
    	lifecycle {
    		ignore_changes = [
    			content
    		]
    	}	
    }
    
  • precondition
    • 리소스 요소에 선언된 인수의 조건 검증
    resource "local_file" "abc" {
    	content = "lifecycle"
    	
    	lifecycle {
    		precondition {
    			condition = var.file_name == "test.txt"
    			error_message = "file name is not 'test.txt'"
    		}
    	}	
    }
    
  • postcondition
    • plan, apply 이후의 결과를 속성 값으로 검증
    resource "local_file" "abc" {
    	content = "lifecycle"
    	
    	lifecycle {
    		postcondition {
    			condition = self.content != ""
    			error_message = "content is empty!"
    		}
    	}	
    }