본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/CS(ComputerScience)

yaml 문법

by 미노드 2023. 4. 17.

yaml을 사용하려면 yaml만의 문법을 이해할 필요가 있습니다.

기본문법
- 들여쓰기 (indent)
- 데이터 정의 (map)
- 배열 정의 (array)
- 주석 (comment)
- 참/거짓
- 숫자표현
- 줄바꿈 (newline)

주의사항
- 띄어쓰기
- 문자열 따옴표

- 들여쓰기 (indent)

들여쓰기는 기본적으로 2칸 또는 4칸을 지원합니다.

1
2
3
4
5
6
person:
  name: Chungsub Kim
  job: Developer
  skills:
    - docker
    - kubernetes
1
2
3
4
5
6
person:
    name: Chungsub Kim
    job: Developer
    skills:
        - docker
        - kubernetes

- 데이터 정의 (map)

데이터는 [key]: [value] 형식으로 정의합니다.
(띄어쓰기 양식이 중요합니다. 아래는 json형식과 비교한 것이며, json보다 간결하게 표현되는 것을 볼 수 있습니다.)

1
2
3
4
5
6
apiVersion: v1
kind: Pod
metadata:
  name: echo
  labels:
    type: app
1
2
3
4
5
6
7
8
9
10
{
  "apiVersion": "v1",
  "kind": "Pod",
  "metadata": {
    "name": "echo",
    "labels": {
      "type": "app"
    }
  }
}

- 배열 정의 (array)

배열은 -로 표시합니다. json 형식과 비교해보면 다음과 같습니다.

1
2
3
4
5
6
person:
  name: Chungsub Kim
  job: Developer
  skills: 
    - docker
    - kubernetes
1
2
3
4
5
6
7
8
9
{
  "person": {
    "name""Chungsub Kim",
    "job""Developer",
    "skills": [
      "docker""kubernetes"
    ]
  }
}

- 주석 (comment)

주석은 #으로 표시합니다.(전체 라인 주석처리)

1
2
3
4
5
6
7
# comment
person:
  name: Chungsub Kim
  job: Developer
  skills:
    - docker
    - kubernetes

특정 라인의 끝에서 주석 처리도 가능합니다.

1
2
3
4
5
6
person:
  name: Chungsub Kim # subicura
  job: Developer
  skills:
    - docker
    - kubernetes

- 참/거짓

1
2
3
4
5
6
# 아래 명령들은 인식됩니다.
study_hard: yes
give_up: no
hello: True
world: TRUE
manual: false

- 숫자표현

1
2
3
4
5
# number 숫자
version: 1.2
 
# string 
version: "1.2"

- 줄바꿈

yaml에서 내용에 줄바꿈이 들어가야 할 경우 어떻게 표현해야 하는가?
다음 예시로 이해하면 편할 것 같습니다.

" | " 사용(yaml에서와 json에서 비교) | 를 쓰게되면 마지막 줄바꿈(\n)이 포함된 문자를 넣을 수 있습니다.
json 예제와 같은 문자열로 인식된다고 보면 됩니다.

1
2
3
4
5
6
7
newlines_sample: |
            number one line
 
            second line
 
            last line
 
1
2
3
{
  "newlines_sample""number one line\n\nsecond line\n\nlast line\n"
}
 

" |- " 사용으로 마지막 줄바꿈이 없는 문자를 넣을 수 있습니다.
json 예제와 같은 문자열로 인식된다고 보면 됩니다.

1
2
3
4
5
6
newlines_sample: |-
            number one line
 
            second line
 
            last line
1
2
3
{
  "newlines_sample""number one line\n\nsecond line\n\nlast line"
}
 

" > " 사용으로 중간에 들어간 빈줄을 제외 시켜 인식시십니다.
json 예제와 같은 문자열로 인식된다고 보면 됩니다.

1
2
3
4
5
6
newlines_sample: >
            number one line
 
            second line
 
            last line
1
2
3
{
  "newlines_sample""number one line\nsecond line\nlast line\n"
}
 

주의사항

- 띄어쓰기

key와 value사이에는 반드시 빈칸이 필요합니다.
빈칸이 없다면 에러가 납니다.

1
2
3
4
5
# error (not key-value, string)
key:value
 
# ok
key: value

- 문자열 따옴표

대부분의 문자열을 따옴표 없이 사용할 수 있지만 :가 들어간 경우는 반드시 따옴표가 필요합니다.

1
2
3
4
5
6
# error
windows_drive: c:
 
# ok
windows_drive: "c:"
windows_drive: 'c:'

참고 : json2yaml