널 리소스와 트리거
실제 클라우드 리소스에 매핑되지 않는 임의의 명령을 실행하는 `null_resource`를 살펴보고, 프로비저너의 실행 시점을 제어하는 트리거를 사용합니다.
널 리소스와 트리거은(는) CoddyKit의 무료 Terraform Infrastructure as Code 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Terraform Infrastructure as Code 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.
null_resource란 무엇인가요?
Terraform의 null_resource는 클라우드 공급자가 제공하는 인프라 객체를 직접 생성하거나 관리하지 않는 특수한 유형의 리소스입니다.
대신 임의의 명령이나 스크립트를 실행하기 위한 자리 표시자 역할을 하며, 일반적인 리소스 프로비저닝의 범위를 벗어나는 작업에 자주 사용됩니다.
null_resource를 사용하는 이유
'null' 리소스가 왜 필요한지 궁금하실 수 있습니다. 다음과 같은 경우에 매우 유용합니다.
- 로컬 스크립트 실행: Terraform이 실행되는 컴퓨터에서 명령을 실행합니다(예: 구성 파일 준비).
- 배포 후 작업: 실제 리소스가 프로비저닝된 후 설정 또는 정리 작업을 수행합니다.
- 외부 API와 상호 작용: 특정 서비스 전용 Terraform 공급자가 없을 때 사용합니다.
- 사용자 지정 로직: 특정 클라우드 리소스에 연결되지 않은 사용자 지정 단계를 조정합니다.
기본 null_resource 구조
null_resource 블록은 다른 Terraform 리소스와 같은 형태입니다. 프로비저너나 트리거가 없으면 Terraform 상태에 'null' 객체만 생성하고 다른 작업은 수행하지 않습니다.
일반적으로 명령을 실행하기 위한 프로비저너와 명령 실행 시점을 제어하기 위한 트리거를 함께 사용합니다.
간단한 null_resource 예시
다음은 최소한의 null_resource 예시입니다. 여기에 terraform apply를 실행하면 상태에는 생성되지만 외부 작업은 발생하지 않습니다.
작업을 추가할 수 있도록 준비된 자리 표시자일 뿐입니다.
resource "null_resource" "my_placeholder" {
# This resource exists in state but performs no action.
# It's ready to attach provisioners or triggers.
}null_resource와 프로비저너
null_resource의 진정한 강점은 이를 프로비저너와 결합할 때 나타납니다.
프로비저너를 사용하면 Terraform을 실행하는 컴퓨터(local-exec) 또는 원격 리소스 자체(remote-exec, 다만 null_resource에서는 덜 일반적임)에서 스크립트나 명령을 실행할 수 있습니다.
이를 통해 null_resource를 작업 실행기로 사용할 수 있습니다.
트리거 소개
triggers는 null_resource 블록 안에 정의하는 임의의 키-값 쌍으로 이루어진 맵입니다.
그 목적은 Terraform에 다음과 같이 알리는 것입니다. '이 맵의 값 중 하나라도 변경되면 이 null_resource와 해당 프로비저너를 다시 실행해야 합니다.'
이는 인프라 변경에 null_resource가 반응하도록 만드는 데 매우 중요합니다.
트리거 작동 방식
triggers 맵의 값이 변경되면 Terraform은 null_resource의 수정 사항을 감지합니다.
terraform apply를 실행하는 동안 Terraform은 다음 작업을 수행합니다.
- 기존
null_resource가 있으면 삭제합니다. null_resource를 다시 생성합니다.- 연결된 프로비저너를 다시 실행합니다.
이 메커니즘을 사용하면 관련 종속성이 변경될 때만 사용자 지정 작업이 실행됩니다.
예시: 트리거와 local-exec
여기서는 간단한 변수에 따라 구성 파일을 업데이트하는 작업을 null_resource로 시뮬레이션합니다. local-exec 프로비저너가 명령을 실행하고, triggers는 var.app_version이 변경될 때 해당 명령을 다시 실행하도록 합니다.
variable "app_version" {
description = "The version of the application."
type = string
default = "1.0.0"
}
resource "null_resource" "update_config_file" {
triggers = {
version_change = var.app_version
}
provisioner "local-exec" {
command = "echo 'Config updated for version: ${self.triggers.version_change}' > app_config.txt"
}
}모범 사례와 대안
강력한 기능이지만 null_resource는 신중하게 사용하십시오.
- 공급자 우선 사용: 작업에 사용할 전용 Terraform 공급자나 리소스가 있다면 대신 그것을 사용하십시오.
- 멱등성 유지: 프로비저너가 실행하는 스크립트를 부작용 없이 여러 번 안전하게 다시 실행할 수 있도록 하십시오.
- 상태 관리 지양:
null_resource로 외부 상태를 관리하려 하지 마십시오. 이를 위해서는 원격 상태 백엔드를 사용해야 합니다. external데이터 소스 고려: 구조화된 데이터를 반환하는 복잡한 외부 로직에는external데이터 소스가 더 깔끔한 대안일 수 있습니다.
빠른 확인: Null 리소스
null_resource와 triggers에 대해 배웠습니다. 이제 이해한 내용을 확인해 보겠습니다.
복습: Null과 트리거
이번 학습에서는 구체적인 클라우드 리소스에 대응하지 않는 사용자 지정 명령과 스크립트를 실행하는 강력한 도구인 Terraform의 null_resource가 얼마나 다양하게 활용되는지 살펴보았습니다.
또한 null_resource 안에서 종속성을 정의하고 해당 종속성이 변경될 때마다 프로비저너를 다시 실행할 수 있게 하는 메커니즘인 triggers도 배웠습니다. 이를 통해 IaC에서 동적이고 반응적인 사용자 지정 자동화를 구현할 수 있습니다.
자주 묻는 질문
“널 리소스와 트리거” 강의는 무료인가요?
네 — “널 리소스와 트리거” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Terraform Infrastructure as Code 강의 전체를 잠금 해제할 수 있습니다. Terraform Infrastructure as Code 강의에는 총 4개의 강의가 포함되어 있습니다.
“널 리소스와 트리거”에서 뭘 배우나요?
실제 클라우드 리소스에 매핑되지 않는 임의의 명령을 실행하는 `null_resource`를 살펴보고, 프로비저너의 실행 시점을 제어하는 트리거를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Terraform Infrastructure as Code을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Terraform Infrastructure as Code을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Terraform Infrastructure as Code은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“널 리소스와 트리거” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Terraform Infrastructure as Code 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Terraform Infrastructure as Code 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.