Skip to main content

잘가, null_resource

null 유틸리티 공급자는 이름에서 알 수 있듯이 아무 작업도 수행하지 않는 단일 리소스(null_resource)를 구현합니다. null 리소스는 종종 까다로운 리소스 수명 주기 상황을 컨트롤하는 데 널리 사용되며 Terraform Registry에서 세 번째로 많이 다운로드된 공급자입니다.

Terraform 1.4에서는 null 리소스를 기본적으로 대체하는 새로운 terraform_data 리소스를 도입했습니다. 이렇게 하면 구성에 null 공급자를 포함할 필요가 없으며 null_resource와 동일한 모든 기능을 지원합니다.

이제 테라폼 1.4부터는 null_resource 보다는 terraform_data를 사용하게 되겠고 앞으로 hcl 코드에서는 terraform_data를 더 자주 보게 될 것 같습니다.

테라폼 공식 문서에서는 다음과 같이 설명하고 있습니다.

terraform_data 리소스는 관리 리소스 수명 주기를 따라야 하는 값을 저장하고 배치할 다른 논리적 관리 리소스가 없을 때 프로비저너를 트리거하는 데 유용합니다.

아래는 기존에 제가 작성한 테라폼 코드 중 null_resource 부분을 terraform_data로 변경하는 작업입니다.

null_resource

resource "null_resource" "apply" {
provisioner "local-exec" {
command = "bash -c 'while true; do if [ -f outline.json ]; then terraform apply --auto-approve -lock=false; break; fi; sleep 1; done'"
working_dir = "/opt/homebrew/lib/govpn/govpn-terraform/terraform.tfstate.d/${var.aws_region}/"
}

depends_on = [
terraform_data.make_sg_rules
]
}

terraform_data

resource "terraform_data" "apply" {
provisioner "local-exec" {
command = "bash -c 'while true; do if [ -f outline.json ]; then terraform apply --auto-approve -lock=false; break; fi; sleep 1; done'"
working_dir = "/opt/homebrew/lib/govpn/govpn-terraform/terraform.tfstate.d/${var.aws_region}/"
}

triggers_replace = [
terraform_data.create_securitygroup_rules.id
]
}