Terraform Associate 004 #10 모의고사: 전 범위 50문항 + 해설
시리즈의 마지막, 전 범위 모의고사입니다. 풀이 요령은 GitHub Foundations 모의고사와 같습니다.
- 60분 안에 풀어 봅니다(실제 시험과 같은 시간, 비슷한 문항 밀도입니다)
- 한 문항씩 즉시 해설을 보지 말고, 끝까지 푼 뒤 채점합니다
- 35문항(70%) 이상이면 응시를 준비할 수 있는 수준으로 봅니다(실제 합격선은 공개되지 않으며 보수적 기준입니다)
- 약한 영역이 보이면 해당 편(#2〜#9)으로 돌아가 정리합니다
영역 분포 #
| 영역 | 문항 | 범위 |
|---|---|---|
| IaC 개념·테라폼의 목적 (#2) | 6 | Q1〜Q6 |
| 기본기: 버전·provider (#3) | 6 | Q7〜Q12 |
| 핵심 워크플로 (#4) | 8 | Q13〜Q20 |
| state 관리 (#5) | 8 | Q21〜Q28 |
| 모듈 (#6) | 6 | Q29〜Q34 |
| 설정 작성·커스텀 조건 (#7) | 7 | Q35〜Q41 |
| 신규 범위: ephemeral·메타 인수 (#8) | 5 | Q42〜Q46 |
| HCP Terraform (#9) | 4 | Q47〜Q50 |
IaC 개념·테라폼의 목적 (Q1〜Q6) #
Q1. IaC(Infrastructure as Code)의 이점으로 보기 어려운 것은 무엇인가?
해설
IaC는 관리 방식의 개선이지 요금표를 바꾸지 않습니다. 재현성, 버전 관리, 일관성이 정답 축의 키워드이고, 비용·장애의 원천 해결 같은 과장 선택지가 이 영역의 단골 미끼입니다.
Q2. 테라폼의 설정 방식을 가장 정확히 설명한 것은 무엇인가?
해설
테라폼 설정은 “무엇을 원하는가"를 담고 절차를 담지 않습니다. plan이 현재 상태와의 차이에서 실행 계획을 계산합니다. A가 셸 스크립트 방식의 서술입니다.
Q3. 테라폼 apply를 같은 설정으로 여러 번 실행해도 결과가 같은 성질을 무엇이라 하는가?
해설
이미 원하는 상태와 일치하면 아무것도 하지 않으므로 apply는 멱등(idempotent)합니다. 용어 자체를 묻는 문항이 실제로 나오며, 원자성(전부 또는 전무)과의 혼동을 노립니다.
Q4. 테라폼이 수많은 클라우드와 SaaS를 지원할 수 있는 구조적 이유는 무엇인가?
해설
테라폼 코어는 그래프 계산과 plan·state 관리를 맡고, 실제 API 호출은 init 때 내려받는 provider 플러그인이 담당합니다. 이 분업이 생태계 확장의 구조적 배경입니다.
Q5. 테라폼 state의 근본 목적으로 가장 알맞은 것은 무엇인가?
해설
state는 코드·실제 인프라 비교의 근거가 되는 매핑이며, 리소스 속성과 의존성의 기록입니다. state가 없으면 테라폼은 무엇을 관리 중인지 알 수 없습니다.
Q6. provisioner에 대한 HashiCorp의 공식 입장으로 알맞은 것은 무엇인가?
해설
provisioner는 선언형 모델 밖에서 스크립트를 실행하는 장치라 실패 처리와 멱등성이 약해, 공식 문서가 최후 수단으로 규정합니다. 이미지 빌드나 전용 구성 관리 도구가 권장 방향입니다.
기본기: 버전·provider (Q7〜Q12) #
Q7. 버전 제약
~> 6.2가 허용하는 범위는 무엇인가?해설
물결 연산자는 명시한 마지막 자리만 증가를 허용합니다.
~> 6.2는 6.2, 6.3, … 6.x까지 허용하고 7.0은 막습니다. ~> 6.2.0이라면 6.2.x까지만 허용된다는 차이도 함께 기억해야 합니다.Q8. .terraform.lock.hcl 파일에 대한 설명으로 옳은 것은 무엇인가?
해설
required_providers가 허용 범위라면 잠금 파일은 그 안에서 고른 정확한 버전의 고정 기록입니다. 커밋해야 팀·CI가 같은 버전을 씁니다. 이름의 lock은 state 잠금과 무관하다는 것이 함정 포인트입니다.
Q9. 잠금 파일이 기록한 provider 버전을 허용 범위 안의 최신으로 올리는 명령은 무엇인가?
해설
init -upgrade가 제약 범위 안에서 최신 버전을 다시 선택해 잠금 파일을 갱신합니다. C·D는 존재하지 않는 명령입니다.
Q10. 같은 AWS provider를 서로 다른 리전 설정으로 두 개 쓰려면 어떻게 하는가?
해설
provider 블록에 alias를 붙여 등록하고 리소스에서
provider = aws.별칭으로 고릅니다. CloudFront 인증서의 us-east-1 요구가 대표 사례입니다. 대부분의 리소스에는 region 인수가 없습니다.Q11. provider 자격 증명 관리로 권장되는 방식은 무엇인가?
해설
자격 증명 하드코딩은 항상 오답 방향입니다. 환경 변수, 공유 자격 증명 파일, 실행 환경의 역할(EC2 인스턴스 프로파일, CI의 OIDC)이 정답 방향입니다.
Q12. .terraform 디렉터리에 대한 설명으로 옳은 것은 무엇인가?
해설
.terraform은 로컬 캐시라 언제든 init으로 다시 만들 수 있고 .gitignore 대상입니다. 잠금 파일(.terraform.lock.hcl)은 이 디렉터리 밖의 별도 파일이라는 것도 구분 포인트입니다.
핵심 워크플로 (Q13〜Q20) #
Q13. HashiCorp가 정의하는 테라폼 핵심 워크플로 3단계는 무엇인가?
해설
공식 3단계는 Write, Plan, Apply입니다. init은 준비 명령이고 destroy는 apply -destroy의 별칭으로, 별도 단계가 아니라는 프레이밍까지 출제됩니다.
Q14. terraform init을 다시 실행해야 하는 상황이 아닌 것은 무엇인가?
해설
init의 일은 백엔드·provider·모듈 준비입니다. 리소스 인수 수정은 plan·apply의 영역이라 init이 필요 없습니다.
Q15. plan에서 확인한 내용을 그 사이의 변경 없이 정확히 그대로 적용하는 방법은 무엇인가?
해설
저장된 계획 파일로 apply 하면 재계산 없이 그 계획이 그대로 적용됩니다. B는 간극이 남고, C는 프롬프트 생략일 뿐 재계산합니다. CI 파이프라인의 표준 패턴입니다.
Q16. 손상된 것으로 의심되는 리소스 하나를 다음 apply에서 강제로 다시 만들게 하는 현행 방법은 무엇인가?
해설
-replace가 taint 명령의 후속 표준입니다. taint는 폐기 수순이고, B는 중복 생성 위험, D는 삭제 후 생성이라 순서·참조가 어긋납니다.
Q17. -target 플래그에 대한 설명으로 가장 알맞은 것은 무엇인가?
해설
-target은 코드와 인프라의 어긋남을 만들 수 있어 장애 복구 같은 예외 상황용입니다. 일상 사용을 권장하는 선택지는 오답 방향입니다.
Q18. terraform validate에 대한 설명으로 옳은 것은 무엇인가?
해설
validate는 선언 안 된 변수, 잘못된 인수 이름 같은 설정 자체의 오류를 잡습니다. 클라우드 연결이 없어 자격 증명이 필요 없고, provider 스키마가 필요해 init 이후에 실행합니다. B는 fmt, D는 plan -refresh-only의 일입니다.
Q19. 가장 상세한 테라폼 디버그 로그를 파일로 남기는 설정은 무엇인가?
해설
디버그 로그는 명령 플래그가 아니라 TF_LOG 환경 변수로 켜며 TRACE가 최상세 레벨입니다. TF_LOG_PATH가 파일 경로 지정입니다. B·C·D는 존재하지 않습니다.
Q20. terraform destroy와 같은 일을 하는 명령은 무엇인가?
해설
destroy는 apply -destroy의 별칭입니다. plan -destroy는 삭제 계획의 미리 보기일 뿐 실행하지 않고, state rm은 관리 제외일 뿐 리소스를 지우지 않습니다.
state 관리 (Q21〜Q28) #
Q21. 기본(로컬 백엔드) 동작에서 state가 저장되는 위치는 어디인가?
해설
로컬 백엔드의 state는 작업 디렉터리의 terraform.tfstate입니다. .terraform 디렉터리는 플러그인·모듈 캐시라는 구분이 함정 포인트입니다.
Q22. 원격 백엔드가 로컬 state 대비 제공하는 이점이 아닌 것은 무엇인가?
해설
plan의 계산 로직은 백엔드와 무관하게 같습니다. 원격 백엔드의 가치는 공유, 잠금, 보관 안정성입니다.
Q23. apply를 실행하자 “Error acquiring the state lock"이 나왔다. 가장 먼저 할 일은 무엇인가?
해설
잠금은 동시 실행을 막는 정상 동작이라 대부분 대기가 정답입니다. force-unlock은 실행자가 없음을 확인한 뒤의 최후 수단이며, 진행 중 실행의 잠금을 풀면 state 동시 쓰기 사고가 됩니다.
Q24. terraform force-unlock에 대한 설명으로 옳은 것은 무엇인가?
해설
force-unlock은 남아 있는 잠금 표시를 제거하는 것이 전부입니다. state를 고치지도, 다른 실행을 중단시키지도 않습니다.
Q25. terraform state rm을 실행하면 어떻게 되는가?
해설
state rm은 매핑 기록만 지우는 관리 제외입니다. 실제 리소스 삭제는 destroy 또는 코드 제거 후 apply의 일이라는 구분이 이 명령의 핵심 출제 포인트입니다.
Q26. 리소스 블록의 이름을 바꾸면서 재생성을 피하는 선언형 방법은 무엇인가?
해설
이름 변경은 기본적으로 “삭제 + 생성"으로 계산되므로 moved 블록(또는 명령형 state mv)으로 주소 이동을 알려야 합니다. D 같은 자동 인식은 없습니다.
Q27. 콘솔에서 먼저 만들어진 기존 리소스를 테라폼 관리로 가져오는 현행 표준은 무엇인가?
해설
import 블록(1.5 이상)이 리뷰 가능한 표준 경로이며, -generate-config-out으로 코드 초안도 만들 수 있습니다. A는 중복 생성 시도, B는 손상 위험이라 금기입니다.
Q28. sensitive = true로 표시한 변수 값에 대한 설명으로 옳은 것은 무엇인가?
해설
sensitive는 화면 마스킹일 뿐입니다. state 평문 문제의 근본 대응은 write-only 인수이고, 운영 대응은 state 저장소의 암호화·접근 통제입니다.
모듈 (Q29〜Q34) #
Q29. 테라폼에서 루트 모듈이란 무엇인가?
해설
실행 디렉터리의 설정이 루트 모듈이고, module 블록으로 부르는 것이 자식 모듈입니다. 어떤 설정이든 최소 하나의 모듈(루트)이라는 프레이밍이 출제됩니다.
Q30. module 블록의 version 인수가 유효한 source는 무엇인가?
해설
version은 레지스트리 소스 전용입니다. Git 소스는 URL의 ref 쿼리로, 로컬 경로는 버전 개념 없이 그 시점 파일로 결정됩니다.
Q31. 자식 모듈이 만든 값을 호출하는 쪽에서 읽는 방법은 무엇인가?
해설
모듈은 캡슐화되어 output으로 내보낸 값만 읽을 수 있습니다. 필요한 값에 output이 없다면 모듈에 output을 추가하는 것이 답입니다.
Q32. module 블록을 새로 추가한 뒤 plan이 “Module not installed” 에러를 낸다. 해결은 무엇인가?
해설
모듈 설치는 init의 일입니다. 모듈 추가·source 변경 후에는 init을 다시 실행해야 합니다.
Q33. 퍼블릭 레지스트리의 verified 표시에 대한 설명으로 옳은 것은 무엇인가?
해설
verified는 파트너 검증 표시이지 사용 제한도 보안 보증도 아닙니다. 모듈 평가는 레지스트리의 입력·출력 문서와 소스로 합니다.
Q34. 레지스트리 모듈에 version을 지정하지 않으면 어떻게 되는가?
해설
version 생략은 최신 추적이라 남이 올린 새 버전이 예고 없이 plan을 바꿀 수 있습니다. 모듈 버전 고정이 재현성의 기본 습관인 이유입니다. 잠금 파일은 provider용이지 모듈 버전은 기록하지 않습니다.
설정 작성·커스텀 조건 (Q35〜Q41) #
Q35. 같은 변수에 값이 여러 경로로 들어올 때 최종 적용되는 것은 무엇인가?
해설
우선순위는 환경 변수 → terraform.tfvars → auto.tfvars → 명령줄 순으로 뒤가 이깁니다. 명령줄 지정이 가장 강합니다.
Q36. locals에 대한 설명으로 옳은 것은 무엇인가?
해설
선언은 복수형 locals, 참조는 단수형 local이라는 표기 차이가 자잘한 함정입니다. 외부 입력은 variable, 내부 계산은 locals라는 역할 구분도 함께 출제됩니다.
Q37. 사용자 데이터 스크립트 파일을 읽으면서 변수를 치환해 넣고 싶다. 알맞은 함수는 무엇인가?
해설
templatefile이 파일을 읽으며 전달한 변수로 치환합니다. file은 치환 없이 내용만 읽습니다. user_data 구성의 단골 함수입니다.
Q38. 표현식의 결과를 apply 없이 대화형으로 실험하는 명령은 무엇인가?
해설
console이 현재 설정의 변수·리소스를 읽으며 표현식을 실험하는 대화형 도구입니다. eval·expression 명령은 존재하지 않습니다.
Q39. 리소스의 lifecycle 블록 안에서 “이 리소스를 평가하기 전에 성립해야 할 가정"을 검증하는 것은 무엇인가?
해설
precondition이 평가 전 가정, postcondition이 평가 후 결과의 보증입니다. validation은 변수 입력값 검증, check는 apply를 막지 않는 지속 검증이라는 4자 구분이 이 영역의 축입니다.
Q40. postcondition 안에서 자기 자신의 속성을 참조하는 키워드는 무엇인가?
해설
postcondition에서는 self로 평가된 자기 속성을 참조합니다(예: self.architecture). this는 모듈 내 리소스 이름 관례이지 키워드가 아니고, each는 for_each의 반복 변수입니다.
Q41. 커스텀 조건 중 실패해도 apply를 차단하지 않고 경고만 남기는 것은 무엇인가?
해설
check 블록만 비차단입니다. 배포를 막지 않으면서 인프라 상태(인증서 만료 임박 등)를 지속 감시하는 용도이며, 나머지 셋은 실패 시 plan·apply를 멈춥니다.
신규 범위: ephemeral·메타 인수 (Q42〜Q46) #
Q42. ephemeral 값의 성질로 옳은 것은 무엇인가?
해설
ephemeral은 기록에 남지 않는 실행 중 전용 값이라 시크릿 취급에 적합합니다. 실행마다 새로 평가된다는 성질이 B와의 구분점입니다.
Q43. aws_db_instance의 password_wo 같은 write-only 인수의 값을 나중에 교체하는 방법은 무엇인가?
해설
값이 state에 없어 테라폼이 변경을 감지할 수 없으므로, 버전 번호 증가가 교체 트리거입니다. 이 “감지 불가 → 버전 트리거” 논리가 write-only 출제의 핵심입니다.
Q44. depends_on을 쓰는 것이 정당한 경우는 무엇인가?
해설
의존성은 참조에서 자동 추론되므로 depends_on은 참조로 표현되지 않는 숨은 의존 전용입니다. 불필요한 선언은 병렬성을 줄여 apply를 느리게 할 뿐입니다.
Q45. 리스트 기반 count로 만든 리소스들에서 리스트 중간 요소를 제거하면 무슨 일이 일어나는가?
해설
count 리소스의 정체성은 인덱스라서 중간 제거가 뒤 요소를 전부 밀어냅니다. 키 기반이라 안전한 for_each가 이 함정의 답이며, 둘의 선택 기준 문항으로 반복 출제됩니다.
Q46. 운영 데이터베이스가 실수로 삭제 계획에 포함되는 것을 테라폼 차원에서 막는 설정은 무엇인가?
해설
prevent_destroy는 삭제 계획이 만들어지는 순간 에러로 차단합니다. 한계(콘솔 삭제는 못 막고 블록 삭제와 함께 보호도 사라짐)까지 묶어 출제됩니다.
HCP Terraform (Q47〜Q50) #
Q47. HCP Terraform의 workspace에 대한 설명으로 옳은 것은 무엇인가?
해설
HCP workspace는 CLI 워크스페이스와 이름만 같은 별개 개념으로, state·변수·이력·권한이 묶이는 플랫폼의 관리 단위입니다. project가 여러 workspace를 묶는 상위 구조입니다.
Q48. 여러 workspace에 공통 클라우드 자격 증명을 공급하는 표준 방법은 무엇인가?
해설
variable set이 공통 변수 묶음의 정답입니다. workspace 개별 변수가 variable set보다 우선한다는 우선순위도 함께 기억합니다.
Q49. Sentinel 정책 중 위반 시 차단되지만 권한자가 오버라이드하고 진행할 수 있는 수준은 무엇인가?
해설
soft-mandatory가 “차단하되 오버라이드 가능"입니다. hard-mandatory는 우회 불가 차단, advisory는 경고만 남깁니다. 세 수준의 구분이 정책 문항의 전부라고 해도 될 정도의 단골입니다.
Q50. Terraform Enterprise는 무엇인가?
해설
Enterprise는 같은 계열 기능의 자체 호스팅판입니다. 외부 SaaS에 데이터를 둘 수 없는 조직을 위한 형태라는 위치 구분만 알면 됩니다.
채점과 다음 단계 #
35문항(70%) 이상이면 응시를 준비할 수 있는 수준입니다. 틀린 문항은 영역 분포 표에서 해당 편을 찾아 돌아가고, 특히 #7의 커스텀 조건과 #8의 신규 범위는 004에서 새로 들어온 만큼 오답이 몰렸다면 우선 보강 대상입니다. 응시 전에는 공식 study guide와 샘플 문항으로 시험의 영어 표현에 한 번 익숙해지는 것을 권합니다.
시리즈와 함께한 학습이 여기서 끝납니다. 이 자격증 라인의 기반이 된 테라폼 기초·실전·운영 트랙 26편이 실무의 깊이를 담당하니, 시험 준비 중 손이 기억하지 못하는 개념을 만나면 언제든 트랙으로 내려가 실습을 곁들이기를 권합니다. 합격을 빕니다.