LabHub

Terraform/OpenTofu 기초 · 변수와 출력 · 퀴즈

퀴즈: 변수와 출력

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 같은 변수에 `default`, `TF_VAR_` 환경변수, `terraform.tfvars`, 명령줄 `-var` 네 곳 모두 값이 있습니다. 최종적으로 쓰이는 값은?

    1. `default` 의 값
    2. 환경변수의 값
    3. 명령줄 `-var` 의 값
    4. `terraform.tfvars` 의 값
  2. `variable` 과 `locals` 의 차이로 옳은 것은?

    1. `locals` 는 자식 모듈 안에서만 쓸 수 있고 `variable` 은 루트 모듈에서만 선언할 수 있다
    2. `locals` 는 밖에서 주입할 수 없는 이름 붙인 식이고, `variable` 은 외부에서 값을 받는 입구다
    3. 둘 다 `-var` 나 `terraform.tfvars` 로 값을 덮어쓸 수 있고 선언 문법만 다르다
    4. `locals` 는 계산 결과가 상태 파일에 저장되고 `variable` 은 실행하는 동안에만 메모리에 있다
  3. 변수에 `validation` 을 붙이는 가장 실질적인 이득은?

    1. 잘못된 값을 실행 초기에 거부해 절반만 만들어진 인프라가 생기는 것을 막는다
    2. 변수 설명과 허용 범위가 `terraform-docs` 출력에 자동으로 실린다
    3. 값 범위를 미리 알려 주므로 계획 단계의 조회 횟수가 줄어 적용이 빨라진다
    4. 검증을 통과한 값만 상태에 기록되므로 불필요한 속성이 빠져 상태 파일이 가벼워진다
  4. 출력에 `sensitive = true` 를 붙였을 때 실제로 보장되는 것은?

    1. 그 출력을 참조하는 다른 모듈에서는 값을 아예 읽을 수 없게 접근이 차단된다
    2. 상태 파일에 기록될 때 그 속성만 암호화되어 저장되고 읽을 때 복호화된다
    3. `terraform output -json` 결과에서도 값이 빠지고 마스킹 문자열로 대체된다
    4. 사람이 읽는 출력 화면에서 값이 가려질 뿐, 상태 파일과 JSON 출력에는 평문으로 남는다
  5. 환경마다 반드시 달라야 하는 값에 기본값을 주지 않는 편이 나은 이유는?

    1. 값을 깜빡했을 때 조용히 개발용 설정으로 프로덕션이 만들어지는 것을 막기 위해
    2. 기본값은 우선순위가 가장 높아 tfvars 나 `-var` 로 준 값을 덮어 버리기 때문
    3. 기본값이 있는 변수에는 `validation` 블록을 함께 선언할 수 없기 때문
    4. 기본값이 있으면 그 변수는 `TF_VAR_` 환경변수로 덮어쓸 수 없게 되기 때문
  6. 장애 대응 중 `-var replicas=10` 으로 서비스를 살렸습니다. 그다음 반드시 해야 할 일은?

    1. 아무것도 하지 않아도 값이 유지된다
    2. 해당 리소스를 상태에서 제거한다
    3. 그 변수의 기본값을 10 으로 바꾸고 커밋하지 않는다
    4. 그 값을 저장소의 변수 파일에 반영하고 커밋한다