YAML 의 가장 중요한 규칙
YAML 은 들여쓰기로 중첩을 표시해. 그리고 그 들여쓰기는 스페이스만 써. 탭은 안 돼. 파서 대부분은 들여쓰기에 탭이 보이면 대놓고 에러를 내. 더 나쁜 건 그냥 받아주고 정렬만 소리 없이 망가뜨리는 소수의 파서고.
얼마나 들여쓰기
spec 자체는 관대해. 같은 블록 안에서만 칸 수가 일정하면 몇 칸이든 돌아가. 관행은 2 칸이야. 옛 Ansible role 이나 일부 Kubernetes manifest 예제처럼 4 칸을 쓰는 데도 있고. 파일마다 하나를 정해서 끝까지 지켜.
부모의 이름 너머 들여쓰기
자식은 부모의 콜론이 아니라 이름을 넘어서까지 들여써야 해. foo:\n bar: 1 이 되는 이유는 bar 가 foo 가 시작하는 자리보다 뒤에 앉아 있어서야. 한 칸만 어긋나도 파서가 거부하거나, 더 고약하게는 데이터 모양을 다르게 읽어버려.
'tab vs space' 함정: 에디터는 파일 종류를 보고 탭을 알아서 바꿔줘. 그런데 YAML 파일이 그냥 'plain text' 로 인식되면 에디터가 탭을 그대로 집어넣고, YAML 파서가 거기서 죽어. 이때 에러는 보통 'expected mapping value, got X' 라면서 들여쓴 줄을 가리키지, 탭 이야기는 한마디도 안 해. 에디터에서 YAML 파일은 무조건 스페이스를 넣도록 잡아둬.