liminfo

YAML Reference

YAML 문법 레퍼런스

25개 결과

YAML Reference 소개

YAML 레퍼런스는 설정 파일, CI/CD 파이프라인, Kubernetes 매니페스트, Docker Compose 파일, Ansible 플레이북에서 널리 사용되는 사람이 읽을 수 있는 데이터 직렬화 형식인 YAML(YAML Ain't Markup Language)에 대한 상세하고 검색 가능한 가이드입니다. 기본 키-값 쌍과 주석부터 앵커, 별칭, 병합 키, 복합 매핑 키 같은 고급 기능까지 모든 핵심 구문 요소를 각 구조에 대한 명확한 예제와 함께 다룹니다.

이 레퍼런스는 YAML 구문을 여섯 가지 명확한 카테고리로 분류합니다. 기본 문법(키-값 쌍, 주석, 들여쓰기 규칙, 문서 구분자), 스칼라(null, boolean, number, string, date/time 타입), 시퀀스(블록 스타일 리스트, 인라인 플로 스타일 배열, 중첩 다차원 배열, 객체 배열), 매핑(중첩 객체, 인라인 플로 스타일 객체, 복합 키, 병합 키), 앵커(앵커 정의, 별칭 참조, 데이터 재사용 패턴), 멀티라인(리터럴 블록, 접힌 블록, strip과 keep 수정자)입니다.

Kubernetes 배포 매니페스트 작성, GitHub Actions 워크플로 설정, Docker Compose 스택 정의, Ansible 자동화 플레이북 구축 등 어떤 작업을 하든 이 레퍼런스는 필요한 정확한 구문 세부 사항을 제공합니다. 각 항목에는 구문 패턴, 명확한 설명, 실제 사용 방법을 보여주는 복사 가능한 예제가 포함됩니다. 탭 금지 들여쓰기 규칙, 리터럴(|) 블록과 접힌(>) 블록 스칼라의 차이, DRY 설정을 위한 강력한 앵커/별칭 시스템이 모두 자세히 설명되어 있습니다.

주요 기능

  • null(~), boolean, 정수(16진수, 8진수), 실수, ISO 8601 날짜/시간 형식을 포함한 완전한 스칼라 타입 레퍼런스
  • 중첩 구조를 갖는 시퀀스와 매핑의 블록 스타일 및 플로 스타일 구문 예제
  • 병합 키(<<) 지원과 함께 설정 파일의 반복을 제거하는 앵커(&)와 별칭(*) 패턴
  • 리터럴 블록(|), 접힌 블록(>), strip(-), keep(+) 수정자를 설명하는 멀티라인 문자열 처리
  • 멀티 문서 YAML 스트림을 위한 문서 구분자(---)와 종료 마커(...) 사용법
  • 시퀀스, 매핑, 멀티라인 문자열을 키로 사용하는 복합 키(?) 구문
  • 모호한 경우에 특정 데이터 타입을 강제하는 !!str, !!int 태그를 활용한 타입 변환 예제
  • 기본 문법, 스칼라, 시퀀스, 매핑, 앵커, 멀티라인 섹션별 카테고리 기반 필터링

자주 묻는 질문

YAML에서 리터럴 블록(|)과 접힌 블록(>)의 차이점은 무엇인가요?

리터럴 블록 스칼라(|)는 모든 줄바꿈을 작성된 그대로 보존하여 YAML에 포함된 셸 스크립트, 코드 블록, 사전 형식화된 텍스트에 이상적입니다. 접힌 블록 스칼라(>)는 단일 줄바꿈을 공백으로 대체하여 줄을 문단으로 연결하며, 이중 줄바꿈(빈 줄)은 실제 줄바꿈으로 보존됩니다. 이러한 특성으로 접힌 블록은 자연스럽게 줄 바꿈되어야 하는 긴 설명이나 문서 문자열에 유용합니다.

YAML 앵커와 별칭은 중복을 줄이기 위해 어떻게 동작하나요?

앵커(&name)는 재사용할 값을 표시하고, 별칭(*name)은 문서의 다른 곳에서 저장된 값을 참조합니다. 병합 키(<<: *name)와 결합하면 기본 설정을 한 번 정의하고 여러 곳에서 상속받아 다른 필드만 재정의할 수 있습니다. 예를 들어, 데이터베이스 기본값을 앵커로 지정하고 개발, 스테이징, 프로덕션 설정에 병합하여 환경별로 호스트와 인증 정보만 변경할 수 있습니다.

YAML에서 탭을 들여쓰기에 사용할 수 없는 이유는 무엇인가요?

YAML은 탭 너비가 에디터와 터미널마다 표준화되지 않아(2, 4, 8칸 등) 엄격하게 스페이스만 들여쓰기에 허용합니다. 탭과 스페이스를 혼용하면 한 에디터에서 올바르게 들여쓰기된 파일이 다른 에디터에서 깨지는 일관성 없는 파싱이 발생할 수 있습니다. 스페이스만 사용하면 시각적 구조가 항상 논리적 구조와 일치하여 설정 파일의 미묘한 계층 구조 오류를 방지합니다.

YAML에서 null 값은 어떻게 표현하나요?

YAML은 null을 세 가지 방법으로 표현할 수 있습니다: 명시적 키워드 null, 물결표 약칭 ~, 빈 값(콜론 뒤에 값이 없는 키)입니다. 세 가지 모두 대상 프로그래밍 언어에서 동일한 null/nil/None 값으로 파싱됩니다. 빈 값 형태는 기본값이 없어야 하는 선택적 설정 필드에 주로 사용되고, 명시적 null은 복잡한 문서에서 명확성을 위해 선호됩니다.

블록 스타일과 플로 스타일의 차이점은 무엇인가요?

블록 스타일은 들여쓰기로 구조를 나타내며 항목을 별도 줄에 배치합니다(시퀀스는 "- item", 매핑은 "key: value"를 각 줄에). 플로 스타일은 시퀀스에 대괄호([a, b, c]), 매핑에 중괄호({x: 1, y: 2})를 사용하는 JSON 유사 인라인 표기법입니다. 블록 스타일은 복잡하고 중첩된 구조에 더 읽기 좋고, 플로 스타일은 한 줄에 들어가는 짧고 간단한 컬렉션에 간결합니다.

YAML에서 문자열 인용과 특수 문자는 어떻게 처리하나요?

일반(따옴표 없는) 문자열은 대부분의 값에 작동하지만 콜론, 대괄호, 선행 특수 문자를 포함하면 실패합니다. 작은따옴표는 작은따옴표 자체를 두 번 써서 이스케이프하는 것 외에는 모든 문자를 있는 그대로 보존합니다. 큰따옴표는 줄바꿈 \n, 탭 \t, 유니코드 \x 또는 \u 등의 이스케이프 시퀀스를 지원합니다. 숫자처럼 보이는 값을 문자열로 취급하려면 !!str을 사용하세요.

멀티 문서 YAML 스트림에서 ---와 ... 마커는 어떻게 동작하나요?

--- 마커는 단일 파일 내에서 새로운 YAML 문서를 시작하여 여러 독립 문서를 연결할 수 있게 합니다. ... 마커는 선택적으로 문서의 끝을 알립니다. 이는 Kubernetes에서 하나의 파일에 ---로 구분된 여러 리소스 정의를 포함할 때 흔히 사용됩니다. 파서는 각 문서를 독립적으로 처리하며, 첫 번째 문서 시작의 ---가 없으면 암시적으로 가정됩니다.

YAML은 표준 십진수 외에 어떤 숫자 형식을 지원하나요?

YAML은 십진 정수(42), 음수(-17), 부동소수점(3.14), 과학적 표기법(1.0e+5), 0x 접두사 16진수(0xFF = 255), 0o 접두사 8진수(0o77 = 63)를 지원합니다. 밑줄은 큰 숫자의 시각적 구분자로 사용할 수 있습니다(1_000_000). 무한대와 숫자가 아닌 값을 나타내는 특수 실수 값 .inf, -.inf, .nan도 지원됩니다.