测验:把文件当作状态来管
한국어 원문으로 표시합니다.
copy 태스크에 따옴표 없이 mode: 644 라고 적었습니다. 실제로 남는 권한은?
- 1204 — YAML 이 10진수 644 로 읽고 모듈이 그 값을 그대로 권한 비트로 써서 sticky 비트까지 붙는다
- 0644 — 앞자리 0 은 생략해도 되는 표기라 따옴표가 있든 없든 결과가 같게 나온다
- 0755 — 권한 표기를 해석하지 못해 모듈이 디렉터리 기본값으로 되돌려 놓는다
- 실행 전에 문법 오류로 거부돼 플레이북이 첫 태스크조차 시작하지 못한다
blockinfile 의 marker 가 하는 일로 가장 정확한 것은?
- 블록 안의 줄을 정렬해 두어 다음 실행의 diff 가 짧게 나오도록 만드는 표시다
- 다음 실행에서 자기가 관리하는 구간을 다시 찾는 표식이라, 문구를 바꾸면 블록이 두 벌이 된다
- 블록을 파일의 어느 위치에 넣을지 정하는 앵커라, 지정하지 않으면 항상 파일 맨 앞에 붙는다
- 블록 내용의 해시를 담아 두어 사람이 손으로 고친 흔적을 다음 실행에서 검출하는 서명이다
copy 의 validate 명령이 0 이 아닌 값으로 끝났습니다. 대상 경로는 어떻게 되나요?
- 새 내용이 먼저 쓰인 뒤 검사가 돌고, 떨어지면 backup 파일에서 자동으로 되돌려진다
- 새 내용이 그대로 쓰이고 태스크는 changed 로 끝나며 검사 결과는 경고로만 남는다
- 임시 파일에만 쓰였다가 버려지고 대상은 손대지 않은 채로 남으며 태스크가 실패한다
- 대상 파일이 0바이트로 잘린 다음 검사가 돌기 때문에 실패하면 빈 파일이 남는다
fetch 모듈이 하는 일로 옳은 것은?
- 컨트롤러의 파일을 대상 호스트로 보내되 내용이 달라졌을 때만 실제로 전송한다
- 대상 호스트의 파일을 컨트롤러를 거치지 않고 다른 대상 호스트로 바로 복사한다
- 대상 호스트의 파일 내용을 읽어 변수로 담아 주므로 register 없이 바로 참조할 수 있다
- 대상 호스트의 파일을 컨트롤러로 가져오며 기본으로 호스트 이름 디렉터리를 만들어 담는다
state: hard 로 하드 링크를 걸어 둔 원본을 copy 로 다시 배치한 뒤 같은 플레이북을 돌리면?
- copy 가 원본을 제자리에서 고치므로 링크는 그대로 유지되고 두 번째 실행은 조용히 끝난다
- 하드 링크가 새 원본을 가리키도록 모듈이 자동으로 다시 걸고 changed 로 보고한다
- 링크가 끊어진 것을 모듈이 알아채고 경고만 남긴 채 ok 로 지나가 두 번째 실행도 조용하다
- copy 가 새 파일로 바꿔치기해 링크는 옛 아이노드에 남고, file 태스크는 대상이 이미 있다며 실패한다
여러 줄짜리 구획을 남의 설정 파일에 넣어야 할 때 lineinfile 을 줄 수만큼 반복하는 것이 위험한 이유는?
- lineinfile 은 정규식만 인자로 받기 때문에 평범한 문자열을 넣으면 매번 changed 로 보고된다
- 줄마다 따로 판정해 순서와 인접성을 보장하지 않고, 나중에 어디까지가 자기 구획인지 알 수 없다
- 한 파일에 lineinfile 태스크를 둘 이상 쓰면 마지막 하나만 적용되고 나머지는 조용히 무시된다
- 정규식에 맞는 줄을 전부 바꾸기 때문에 파일이 커질수록 실행 시간이 제곱으로 늘어난다