Terraform/OpenTofu Fundamentals
Quiz: Variables and Outputs
한국어 원문으로 표시합니다.
같은 변수에 default, TF_VAR_ 환경변수, terraform.tfvars, 명령줄 -var 네 곳 모두 값이 있습니다. 최종적으로 쓰이는 값은?
default의 값- 환경변수의 값
- 명령줄
-var의 값 terraform.tfvars의 값
variable 과 locals 의 차이로 옳은 것은?
locals는 자식 모듈 안에서만 쓸 수 있고variable은 루트 모듈에서만 선언할 수 있다locals는 밖에서 주입할 수 없는 이름 붙인 식이고,variable은 외부에서 값을 받는 입구다- 둘 다
-var나terraform.tfvars로 값을 덮어쓸 수 있고 선언 문법만 다르다 locals는 계산 결과가 상태 파일에 저장되고variable은 실행하는 동안에만 메모리에 있다
변수에 validation 을 붙이는 가장 실질적인 이득은?
- 잘못된 값을 실행 초기에 거부해 절반만 만들어진 인프라가 생기는 것을 막는다
- 변수 설명과 허용 범위가
terraform-docs출력에 자동으로 실린다 - 값 범위를 미리 알려 주므로 계획 단계의 조회 횟수가 줄어 적용이 빨라진다
- 검증을 통과한 값만 상태에 기록되므로 불필요한 속성이 빠져 상태 파일이 가벼워진다
출력에 sensitive = true 를 붙였을 때 실제로 보장되는 것은?
- 그 출력을 참조하는 다른 모듈에서는 값을 아예 읽을 수 없게 접근이 차단된다
- 상태 파일에 기록될 때 그 속성만 암호화되어 저장되고 읽을 때 복호화된다
terraform output -json결과에서도 값이 빠지고 마스킹 문자열로 대체된다- 사람이 읽는 출력 화면에서 값이 가려질 뿐, 상태 파일과 JSON 출력에는 평문으로 남는다
환경마다 반드시 달라야 하는 값에 기본값을 주지 않는 편이 나은 이유는?
- 값을 깜빡했을 때 조용히 개발용 설정으로 프로덕션이 만들어지는 것을 막기 위해
- 기본값은 우선순위가 가장 높아 tfvars 나
-var로 준 값을 덮어 버리기 때문 - 기본값이 있는 변수에는
validation블록을 함께 선언할 수 없기 때문 - 기본값이 있으면 그 변수는
TF_VAR_환경변수로 덮어쓸 수 없게 되기 때문
장애 대응 중 -var replicas=10 으로 서비스를 살렸습니다. 그다음 반드시 해야 할 일은?
- 아무것도 하지 않아도 값이 유지된다
- 해당 리소스를 상태에서 제거한다
- 그 변수의 기본값을 10 으로 바꾸고 커밋하지 않는다
- 그 값을 저장소의 변수 파일에 반영하고 커밋한다