IT 여러가지

IT: YAML(YML)

dewstream 2025. 3. 4. 15:00

※ 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


오늘은 여기까지~