Ansible 기초 · 변수와 팩트 · 퀴즈
퀴즈: 변수와 팩트
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
같은 이름의 변수가 롤 defaults, 그룹 변수, 명령줄 `-e` 세 곳에 있습니다. 최종적으로 쓰이는 값은?
- 정의가 충돌해 실행이 중단된다
- 롤 defaults
- 명령줄 -e
- 그룹 변수
롤을 만들 때 사용자가 덮어쓰기를 기대하는 값은 어디에 두어야 하나요?
- 롤의 `vars/main.yml`
- 플레이북 상단의 `vars:` 블록
- 롤의 `defaults/main.yml`
- 인벤토리의 `group_vars/all.yml`
`gather_facts: false` 를 쓰는 실용적 이유는?
- 대상이 많을 때 수집 비용이 실행 시간의 큰 부분을 차지하기 때문
- 팩트에 담긴 호스트 정보가 로그로 새어 나갈 위험이 크기 때문
- 컨테이너나 가상 환경에서는 수집된 팩트를 신뢰할 수 없기 때문
- 팩트를 끄면 변수 우선순위에서 한 단계가 빠져 계산이 단순해지기 때문
`register` 로 받은 결과를 다룰 때 흔한 실수는?
- register 를 플레이의 마지막 태스크에만 붙일 수 있다고 여겨 중간에 쓰지 않는 것
- register 변수가 같은 실행의 다음 플레이로는 넘어가지 않는다고 여겨 매번 다시 만드는 것
- 결과 객체 전체를 그대로 쓰고 필요한 필드(stdout 등)를 고르지 않는 것
- 결과가 통째로 문자열이라 여겨 정규식으로 stdout 을 다시 파싱하려 드는 것
장애 대응 중 `-e replicas=10` 으로 서비스를 살렸습니다. 그다음 반드시 해야 할 일은?
- 그 값을 저장소의 변수 파일에 반영하고 커밋한다
- extra vars 는 호스트에 남으므로 따로 할 일이 없다
- 인벤토리에서 그 호스트를 빼 다음 배포 대상에서 제외한다
- 플레이북에서 그 변수 정의를 지워 덮어쓰기를 막는다
`set_fact` 로 만든 값의 특징은?
- 값이 플레이북 파일에 다시 기록돼 다음 실행에도 그대로 남는다
- 실행 중 계산되며 우선순위가 높아 대부분의 정의를 덮어쓴다
- 한 호스트에서 만든 값이 인벤토리의 모든 호스트에 자동으로 복제된다
- `gather_facts` 를 켠 플레이에서만 동작하며 끄면 무시된다