프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
20_Study(YAML)
20_Study(YAML)

2023. 4. 12. 03:18부트캠프/DevOps (TIL)

YAML

 

YAML은 구성 파일 작성에 자주 사용되는 데이터 직렬화 언어입니다. YAML을 yet another markup language로 생각하는 사람도 있고, YAML ain’t markup language(재귀 약어)로 생각하는 사람도 있습니다. 후자는 YAML이 문서가 아닌 데이터용임을 강조하는 말입니다. 

 

YAML은 사람이 읽을 수 있고 이해하기가 쉬워 프로그래밍 언어 중에서도 인기가 좋습니다. 또 다른 프로그래밍 언어와 함께 사용이 가능합니다. YAML은 유연성과 접근성도 뛰어나 Ansible 자동화 툴에서 Ansible Playbook 형태로 자동화 프로세스를 생성하는 데 사용됩니다.

 

YAML 구문

YAML에는 Perl, C, XML, HTML, 기타 프로그래밍 언어에서 유래한 기능이 있습니다. 또한 YAML은 JSON의 상위 집합이므로 YAML에서 JSON 파일을 사용할 수 있습니다.

YAML은 Python 스타일의 들여쓰기 방법으로 중첩을 표시합니다. 탭 문자는 허용되지 않으므로, 공백을 대신 사용합니다. 중괄호, 대괄호, 닫기 태그 또는 따옴표와 같은 통상적인 형식 기호는 없습니다. YAML 파일은 .yml 또는 .yaml이라는 확장자를 사용합니다. 

YAML 파일은 맵 또는 목록 구조로 되어 있습니다.

맵 구조에서는 키-값 쌍을 연결할 수 있습니다. 각 키는 고유해야 하며 순서는 상관없습니다. Python 사전, 또는 Bash 스크립트의 변수 할당을 생각해 보세요.

YAML의 맵은 먼저 해결해야 닫을 수 있고, 그런 다음 새 맵이 생성됩니다. 들여쓰기 수준을 높이거나 이전 맵을 해결하고 인근 맵을 시작함으로써 새 맵을 생성할 수 있습니다. 

목록의 값은 특정 순서로 나열되며, 목록 하나에 필요한 수의 항목을 포함할 수 있습니다. 목록 시퀀스는 대시(-) 및 공백으로 시작하며 들여쓰기로 상위 항목과 구분합니다. 여기서 시퀀스는 Python 목록 또는 Bash나 Perl의 어레이에 해당합니다. 목록을 맵에 포함할 수 있습니다. 

또한 YAML은 스칼라를 포함할 수 있는데, 스칼라란 문자열, 정수, 날짜, 숫자 또는 부울 등의 값으로 사용할 수 있는 임의의 데이터(유니코드로 인코딩됨)를 말합니다.

YAML 파일을 생성할 때는 이러한 구문 규칙을 준수하고 파일이 유효한지 확인해야 합니다. 린터(linter)는 파일의 구문을 검증하는 애플리케이션입니다. YAML 파일을 생성한 후 애플리케이션에 전달하기 전에 yamllint라는 커맨드로 유효성을 확인할 수 있습니다.

 

YAML 사용

YAML의 가장 흔한 용도 중 하나는 구성 파일을 생성하는 것입니다. YAML과 JSON은 대부분의 경우 서로 바꿔서 사용할 수 있지만 YAML이 JSON보다 가독성이 높고 더 사용자 친화적이기 때문에 구성 파일은 JSON이 아닌 YAML로 작성하는 것이 좋습니다.  

YAML은 Ansible 외에 쿠버네티스 리소스 및 배포에도 사용됩니다. 

YAML의 장점은 GitHub와 같은 소스 제어에 YAML 파일을 추가하면 변경 사항을 추적하고 감사할 수 있어 편리하다는 것입니다. 

 

YAML 실제 적용(실습한 내용)

 

TEST1



TEST2
TEST3

 

'부트캠프 > DevOps (TIL)' 카테고리의 다른 글

21_Study(Docker Daemon)  (0) 2023.04.12
21_Study(Docker)  (0) 2023.04.12
20_Study(데이터 교환 형식)  (0) 2023.04.11
20_Study(JSON이 XML에 비해 가지는 이점)  (0) 2023.04.10
19_Study(HTTP 종류와 차이점)  (0) 2023.04.06