IT: YAML(YML)
※ YAML(YML)
안녕하세요. 듀스트림입니다.
제가 요즘 데몬을 여러 개 만들다 보니 yml 파일을 쓸 일이 많아서 정리할 겸 포스팅해 보겠습니다.
1. YAML(YML)?
• YAML은 "YAML Ain't Markup Language"의 약자로, 사람도 읽기 쉽고 쓰기 편한 데이터 직렬화 형식입니다.
• 주로 설정 파일(configuration files)이나 데이터 교환 형식(data interchange format)으로 사용됩니다.
• 간결하고 직관적인 문법 덕분에 JSON이나 XML보다 가독성이 뛰어납니다.
2. YAML의 특징
• 가독성: 들여쓰기를 이용한 계층 구조 표현으로 사람이 읽기 쉽습니다.
• 유연성: 다양한 데이터 타입(문자열, 숫자, 리스트, 맵 등)을 손쉽게 표현할 수 있습니다.
• 경량성: 불필요한 태그나 기호 없이 간결한 문법을 제공합니다.
• 다양한 언어 지원: 대부분의 프로그래밍 언어에서 YAML 파서를 지원하여 손쉽게 데이터를 불러오고 저장할 수 있습니다.
3. YAML 문법 및 기본 구조
YAML의 주요 문법 요소는 아래와 같습니다.
• 키-값 쌍: key: value 형태로 작성하며, 콜론 뒤에 공백을 두는 것이 일반적입니다.
• 리스트(배열): 하이픈(-)을 이용하여 각 항목을 표시합니다.
fruits:
- apple
- banana
- cherry
• 중첩 구조: 들여쓰기를 통해 계층 구조를 표현합니다.
postgresql:
listen: 0.0.0.0:5432
connect_address: <NODE1_IP>:5432
data_dir: /data
bin_dir: /postgres/bin
...
pg_hba:
- local all all trust
- host replication all 127.0.0.1/32 trust
• 주석: # 기호를 사용하여 주석을 작성할 수 있습니다.
4. YAML 사용 사례
• 설정 파일: Docker, Kubernetes, GitHub Actions 등에서 설정 파일로 사용됩니다. (예를 들어, GitHub Actions에서는 워크플로우 정의에 YAML을 사용합니다.)
• 데이터 직렬화: 프로그램 간 데이터 전송이나 저장 시 JSON보다 가독성이 좋다는 장점 때문에 선택되기도 합니다.
• 인프라 코드: Ansible이나 SaltStack 같은 도구에서도 플레이북(playbook) 작성에 YAML을 사용합니다.
5. YAML 실습 예제
• GitHub Actions 워크플로우 파일 예제
name: CI Workflow
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
# JOB
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest
6. YAML 사용 시 주의사항
• 들여쓰기: 잘못된 들여쓰기는 구문 오류를 발생시킬 수 있으므로 주의해야 합니다.
• 데이터 타입: 숫자, 문자열, 불리언 등 자동 형변환이 일어날 수 있으므로 따옴표를 사용해 명시적으로 표현하는 것이 좋습니다.
• 복잡한 구조: 너무 깊은 중첩 구조는 가독성을 떨어뜨릴 수 있으므로 간결하게 작성하는 것이 권장됩니다.
7. 관련 도구 및 라이브러리
YAML을 효과적으로 사용하기 위해 다양한 도구와 라이브러리를 활용할 수 있습니다.
• 파이썬: PyYAML, ruamel.yaml 등
• 자바스크립트: js-yaml
• Ruby: Psych
• CLI 도구: yamllint(문법 검사기) 등
The Official YAML Web Site
yaml.org
오늘은 여기까지~