Terraform Associate — Terraform Configuration 개념 정리

개념(한글) + 시험용 영어 표현 매칭 대응 objective: Objective 4 (Terraform Configuration)


4a. resource와 data 블록 구분 (Use and differentiate resource and data blocks)

resource 블록

  • 실제 인프라 자원을 생성·수정·삭제하는 블록
  • Terraform이 관리(생명주기 담당)하는 대상

data 블록

  • 이미 존재하는 자원의 정보를 읽어오기만 함 (조회용)
  • 생성/변경하지 않음 → 읽기 전용(read-only)
개념영어 표현
자원 생성·관리 블록resource block
기존 자원 조회 블록data block / data source
읽기 전용read-only
블록 참조 형식resource: <TYPE>.<NAME> / data: data.<TYPE>.<NAME>

4b. attribute 참조 및 리소스 간 참조 (Refer to resource attributes / cross-resource references)

attribute 참조

  • 리소스가 만든 값(예: ID, IP)을 다른 곳에서 참조 가능
  • 형식: <RESOURCE_TYPE>.<NAME>.<ATTRIBUTE> (예: aws_instance.web.id)

리소스 간 참조 (Cross-resource reference)

  • 한 리소스의 속성을 다른 리소스가 참조하면 암묵적 의존성(implicit dependency) 이 생성됨
  • Terraform이 참조 관계를 보고 생성 순서를 자동으로 정함
개념영어 표현
속성 참조attribute reference
참조 형식resource_type.name.attribute
리소스 간 참조cross-resource reference
자동 생성되는 의존성implicit dependency

4c. 변수와 출력 (Use variables and outputs)

Input Variables (입력 변수)

  • 구성에 값을 외부에서 주입 → 재사용성·유연성 향상
  • variable 블록으로 선언 (type, default, description 지정 가능)
  • 참조: var.<NAME>

Output Values (출력 값)

  • apply 후 특정 값을 화면에 출력하거나 다른 모듈에 전달
  • output 블록으로 선언, 참조: value = ...

Local Values (지역 값)

  • 반복되는 표현식을 이름 붙여 재사용, 참조: local.<NAME>
개념영어 표현
입력 변수input variable (var.<NAME>)
출력 값output value
지역 값local values (local.<NAME>)
변수 값 지정 방법CLI (-var), tfvars file, environment variable (TF_VAR_)

4d. 복합 타입 (Understand and use complex types)

기본 타입 (Primitive)

  • string, number, bool

복합/컬렉션 타입 (Complex / Collection types)

타입설명
list순서 있는 같은 타입 값 모음 (인덱스 접근)
set중복 없는 값 모음 (순서 없음)
map키-값 쌍 모음 (같은 타입 값)
object서로 다른 타입의 속성을 가진 구조체
tuple서로 다른 타입 값을 순서대로 가진 모음
개념영어 표현
기본 타입primitive types (string, number, bool)
컬렉션 타입collection types (list, set, map)
구조 타입structural types (object, tuple)

4e. 표현식과 함수로 동적 설정 (Dynamic configuration with expressions and functions)

표현식 (Expressions)

  • 조건 표현식: condition ? true_val : false_val
  • 반복: for 표현식, 리소스 반복은 count / for_each
  • 문자열 삽입: "${...}" (interpolation)

함수 (Built-in Functions)

  • 내장 함수로 값 가공 (예: length(), join(), lookup(), element(), merge(), file())
  • 사용자 정의 함수는 없음 (내장 함수만 사용)
개념영어 표현
조건 표현식conditional expression (? :)
반복 표현식for expression
리소스 반복count / for_each
문자열 보간string interpolation
내장 함수built-in functions

4f. 리소스 의존성 정의 (Define resource dependencies)

암묵적 의존성 (Implicit dependency)

  • 한 리소스가 다른 리소스의 속성을 참조하면 자동 생성
  • 대부분의 의존성은 이 방식으로 처리됨 (권장)

명시적 의존성 (Explicit dependency)

  • 참조 관계가 없지만 순서를 강제해야 할 때 depends_on 사용
개념영어 표현
암묵적 의존성implicit dependency
명시적 의존성explicit dependency (depends_on)
의존성 그래프dependency graph

4g. custom condition으로 설정 검증 (Validate using custom conditions)

Variable Validation

  • variable 블록 안 validation으로 입력값 규칙 검사

Precondition / Postcondition

  • precondition: 리소스 생성 전 조건 검사
  • postcondition: 생성 후 결과 검사
  • lifecycle 블록 또는 리소스 내부에서 정의

Check 블록

  • check 블록으로 인프라 전반의 검증(assertion) 수행
개념영어 표현
변수 검증variable validation
사전 조건precondition
사후 조건postcondition
검증 블록check block
실패 시 메시지error_message

4h. 민감 데이터 관리 & Vault (Managing sensitive data / secrets with Vault)

민감 데이터 처리 (Sensitive data)

  • 변수나 출력을 sensitive = true로 표시 → CLI 출력에서 값 숨김
  • 단, state 파일에는 평문으로 저장되므로 state 보안이 중요
  • 비밀번호·키를 코드에 하드코딩하지 않기
개념영어 표현
민감 표시sensitive = true
출력에서 값 숨김hidden in CLI output
state에 평문 저장 주의stored in plain text in state
하드코딩 금지do not hardcode secrets

Vault를 통한 시크릿 관리 (Secrets management with Vault)

  • HashiCorp Vault로 비밀 값을 중앙에서 안전하게 관리
  • Vault provider로 시크릿을 동적으로 가져와 사용
  • 시크릿을 코드/state에 남기지 않고 외부에서 안전하게 주입
개념영어 표현
시크릿 관리 도구HashiCorp Vault
중앙 집중 관리centralized secrets management
동적 시크릿dynamic secrets

요약

주제내용
resource vs dataresource=생성·관리 / data=조회(read-only)
attribute 참조type.name.attribute, 참조 시 implicit dependency 생성
변수/출력input variable(var.), output, local
복합 타입list, set, map (collection) / object, tuple (structural)
표현식·함수conditional, for, count/for_each, built-in functions
의존성implicit(참조) / explicit(depends_on)
custom 검증validation, precondition, postcondition, check
민감 데이터sensitive=true(단 state엔 평문), Vault로 시크릿 관리