YAML 들여쓰기 이해하기
앤서블 플레이북(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에서 들여 쓰기는 데이터의 구조를 계층적으로 정의하기 위한 방법이다.
'Ansible' 카테고리의 다른 글
[Ansible Playbook] default 필터 사용하기 (1) | 2023.02.09 |
---|---|
[Ansible Playbook] include_role, tasks_from, include (0) | 2023.02.08 |
댓글