LabHub

Ansible 실전 · 템플릿(Jinja2) · 퀴즈

퀴즈: 템플릿

LabHub 에서 이어서 보기

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

  1. `{{ timeout | default(30) }}` 이 하는 일은?

    1. timeout 이 30 보다 크면 상한인 30 으로 잘라서 쓴다
    2. timeout 의 평가를 30 초 뒤로 미뤘다가 그때 값을 읽는다
    3. timeout 이 정의되지 않았거나 비어 있을 때 30 을 쓴다
    4. timeout 에 값이 있든 없든 항상 30 으로 고정한다
  2. 렌더링 결과에 원치 않는 빈 줄이 남는 원인은?

    1. `{% ... %}` 제어 구문이 차지한 줄이 그대로 출력되기 때문
    2. 변수 값 끝에 줄바꿈 문자가 들어 있어 그대로 출력되기 때문
    3. 템플릿 파일의 줄 끝 문자가 CRLF 라 개행이 두 번 찍히기 때문
    4. template 모듈이 파일을 쓸 때 줄마다 개행을 하나씩 더 붙이기 때문
  3. `template` 모듈의 `validate` 옵션을 쓰는 이유는?

    1. 렌더링 결과가 검사를 통과할 때만 대상 경로에 배치하기 위해
    2. 배치할 파일의 소유자와 권한을 원본과 자동으로 맞추기 위해
    3. 변경이 없는 템플릿을 건너뛰어 렌더링 속도를 높이기 위해
    4. 템플릿에서 참조하는 변수가 정의됐는지 미리 검사하기 위해
  4. 템플릿에 생성 시각 주석을 넣으면 생기는 문제는?

    1. 시각을 얻으려 팩트 수집이 매번 강제돼 실행 시간이 눈에 띄게 늘어난다
    2. `backup: yes` 를 켜도 주석만 바뀐 파일은 백업 대상에서 빠진다
    3. 주석 안의 시각 표현을 Jinja 가 해석하지 못해 렌더링이 실패한다
    4. 파일이 매 실행마다 바뀌어 changed 가 나고 핸들러가 매번 돌아 서비스가 재시작된다
  5. 템플릿 안에서 팩트를 쓸 때 주의할 점은?

    1. 특수 환경에서는 예상 밖 값이 나올 수 있으므로 기본값이나 분기를 준비한다
    2. 팩트는 모두 문자열로 들어오므로 숫자 비교 전에 `int` 로 변환해야 한다
    3. 팩트를 참조한 템플릿에서는 template 모듈의 backup 옵션이 무시된다
    4. 팩트는 태스크에서만 참조할 수 있어 템플릿 안에서는 쓸 수 없다
  6. 템플릿에 if 분기가 다섯 겹 쌓였습니다. 가장 나은 개선 방향은?

    1. 템플릿을 환경별로 복사해 각 파일에서 분기를 아예 없앤다
    2. 분기 계산을 변수 준비 단계로 끌어올려 템플릿을 단순하게 유지한다
    3. 각 분기마다 주석을 달아 어떤 조건인지 설명해 둔다
    4. 필터를 이어 붙여 다섯 겹 분기를 한 줄 표현으로 압축한다