본문 바로가기

YAML 들여쓰기 이해하기

오토씨 2023. 2. 8.

Ansible Playbook

앤서블 플레이북(Ansible Playbook)을 작성할 때 들여 쓰기에 대해서 명확하기 이해하기 위해 정리해 본다.

우선 하이픈("-")의 유무에 따라 있는 경우는 리스트, 없는 경우는 딕셔너리로 이해하면 된다.
그리고 문자열 다음에 콜론(":")이 있으면 딕셔너리로 취급된다.s즉 하이픈은 데이터 타입을 결정하는 것이고 중요한 것은 들여 쓰기 깊이이다.

아래 두 yaml은 같은 데이터 구조를 가지게 된다.

fruits1:
- Apple
- Banana
- Orange

>>>

fruits2:
  - Apple
  - Banana
  - Orange

fruites1, furites2는 하이픈 없이 시작했으니 딕셔너리이고,
"Apple", "Banana", "Orange"는 하이픈으로 시작했으니 리스트 타입이다.
그리고 "Apple" 문자열이 fruites1, fruites2 보다 각각 2칸, 4칸 안쪽에서 시작하니 fruites1의 하위 데이터이다.

위 yaml을 각각 json 형태로 표현하면 아래와 같다.

{
    "fruits1": [
        "Apple",
        "Banana",
        "Orange"
    ]
}

>>>

{
    "fruits2": [
        "Apple",
        "Banana",
        "Orange"
    ]
}

따라서 문자열 시작 들여 쓰기 깊이가 같으면 같은 레밸의 데이터 이고,
2칸씩 안쪽이면 하위 레벨의 데이터로 보면 된다.

아래 yaml 파일을 json으로 convert 해보자.

- fruits:
  - apple
  - banana
  - orange
  vegetarian: true

>>>

[
    {
        "fruits": [
            "apple",
            "banana",
            "orange"
        ],
        "vegetarian": true
    }
]

fruits 덩어리가 하이픈으로 시작했으니 전체 데이터는 리스트 타입이다.
그리고 fruites와 vegetarian이 같은 들여쓰기 레벨이므로 동일 레벨의 딕셔너리로 취급된다.

YAML에서 들여 쓰기는 데이터의 구조를 계층적으로 정의하기 위한 방법이다.

댓글