Account 로그인
Jump to section

YAML이란?

URL 복사

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

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

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 파일의 예입니다.

---
# An employee record
name: Martin D'vloper
job: Developer
skill: Elite
employed: True
foods:
  - Apple
  - Orange
  - Strawberry
  - Mango
languages:
  perl: Elite
  python: Elite
  pascal: Lame
education: |
  4 GCSEs
  3 A-Levels
  BSc in the Internet of Things

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

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

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

Ansible에서 YAML 사용

Ansible Playbook은 IT 프로세스를 오케스트레이션하는 데 사용됩니다. 플레이북은 하나 이상의 플레이가 포함된 YAML 파일로, 시스템을 원하는 상태로 정의하는 데 사용됩니다. 

각 플레이는 한 개 이상의 태스크를 실행할 수 있고, 각 태스크는 Ansible 모듈을 호출합니다. Ansible에서는 이 모듈을 사용하여 자동화 태스크를 완료합니다. Ruby, Python 또는 Bash 등 JSON을 반환할 수 있는 언어라면 무엇이든 Ansible 모듈을 작성할 수 있습니다.

Ansible Playbook은 맵과 목록으로 이루어져 있습니다. 플레이북을 만들려면 플레이의 이름을 지정하는 YAML 목록을 시작하고 태스크를 순서에 따라 나열하세요. 들여쓰기가 논리적 상속을 의미하는 것은 아닙니다. 각 줄이 YAML 데이터 유형(목록 또는 맵)이라고 생각하면 됩니다.

Ansible 사용자는 고급 프로그래밍 언어를 배우지 않고도 YAML 템플릿을 사용해 반복 태스크가 자동으로 수행되도록 프로그래밍할 수 있습니다.

쿠버네티스용 YAML

쿠버네티스는 정의된 상태와 실제 상태를 기반으로 작동합니다. 쿠버네티스 오브젝트는 클러스터의 상태를 나타내며, 사용자가 바라는 워크로드 상태를 쿠버네티스에 알리는 역할을 합니다. YAML 파일을 사용해 포드, 오브젝트, 배포와 같은 쿠버네티스 리소스를 생성할 수 있습니다. 

쿠버네티스 오브젝트를 생성할 때는 원하는 오브젝트 상태를 정의하기 위한 사양을 포함해야 합니다. 쿠버네티스 API를 사용해 오브젝트를 생성할 수 있습니다. API에 대한 요청에는 오브젝트 사양이 JSON으로 포함됩니다. 하지만 대부분의 경우 필요한 정보를 kubectl에 YAML 파일로 제공하게 됩니다. Kubectl은 API 요청 시 이 파일을 YAML로 변환합니다.

일단 오브젝트가 생성 및 정의되고 나면, 쿠버네티스는 해당 오브젝트가 항상 존재하도록 합니다. 

개발자 또는 시스템 관리자는 YAML 또는 JSON 파일을 사용하여 정의된 상태를 지정하고 쿠버네티스 API에 제출합니다. 쿠버네티스는 컨트롤러를 사용하여 새롭게 정의된 상태와 클러스터의 실제 상태 간 차이점을 분석합니다.

사람이 읽을 수 있는 Red Hat Ansible Automation Platform의 YAML 자동화 언어를 사용하면 조직 전체에서 자동화 콘텐츠를 공유, 검사, 관리할 수 있습니다.

Ansible Automation Platform에는 플레이북, 분석 등 전사적 자동화를 구현하는 데 필요한 모든 툴이 포함되어 있습니다. 사용자는 시각적 대시보드, 역할 기반 액세스 제어 등을 통해 IT 인프라를 중앙에서 관리하고 제어하여 운영의 복잡성을 줄일 수 있습니다.

Red Hat OpenShift는 엔터프라이즈용 쿠버네티스입니다. 레지스트리, 네트워킹, 텔레메트리, 보안, 자동화, 서비스 등의 부가 기술이 모두 내장되어 있어 기업에서 강력하고 실효성 있는 쿠버네티스를 구축할 수 있습니다.

개발자는 Red Hat OpenShift의 확장성, 제어, 오케스트레이션 기능을 활용하여 컨테이너화된 새 애플리케이션을 구축 및 호스팅하고 클라우드에 배포함으로써 멋진 아이디어를 빠르고 쉽게 새로운 비즈니스로 만들어 낼 수 있습니다.

추가 자료

문서

DevSecOps란?

DevOps의 민첩성과 대응 능력을 최대한 활용하려면 IT 보안 팀이 애플리케이션의 전체 라이프사이클에서 주요 역할을 해야 합니다.

문서

클라우드 보안은 무엇이 다른가요?

매우 심각한 보안 문제는 기존 IT는 물론 클라우드 시스템에도 영향을 미칩니다. 차이점을 알아보세요.

문서

SOAR란?

SOAR은 사례 및 워크플로우 관리, 태스크 자동화, 중앙에서 위협 인텔리전스에 액세스하여 쿼리 및 공유할 수 있는 기능 등 보안 팀에서 사용하는 세 가지 주요 소프트웨어 기능을 가리킵니다.

보안에 대한 자세한 내용

제품

Red Hat Certificate System

사용자 아이덴티티를 관리하고 커뮤니케이션을 비공개로 유지하는 보안 프레임워크입니다.

Red Hat Advanced Cluster Security Kubernetes

클라우드 네이티브 애플리케이션을 더 안전하게 빌드, 배포 및 실행할 수 있도록 지원하는 엔터프라이즈 수준의 쿠버네티스 네이티브 컨테이너 보안 솔루션입니다.

Red Hat Insights

Red Hat 인프라에 대한 보안, 성능 및 가용성 위협을 식별하고 해결하도록 지원하는 예측 분석 서비스

Red Hat Advanced Cluster Management Kubernetes

빌트인 보안 정책을 갖춘 단일 콘솔로 쿠버네티스 클러스터와 애플리케이션을 관리합니다.

리소스

Illustration - mail

유용한 콘텐츠 더 보기

Red Hat Shares 뉴스레터를 구독해 보세요(무료).