[Ansible] YAML 사용법 및 함수 학습하기

이선재·2023년 1월 12일
1

Ansible과 Rundeck

목록 보기
3/3

YAML - 사용법 학습 및 실습해보기


<YAML이란?>

시스템 간에 데이터를 주고 받을 때 데이터의 연동 호환성을 위해 포맷에 대한 규칙이 필요하다. 이러한 규칙에는 CSV, JSON, YAML 등이 있다.
그렇기 때문에 YAML 이란 이러한 데이터 송,수신 간에 사용 되는 포맷에 대한 규칙인 것이다.

YAML 특징

  • 사용자 친화적
  • 주석 사용 가능 (#)
  • 간결한 문법
  • 데이터간 구분
    • yaml : 띄어쓰기
    • json : 중괄호
  • 복잡한 object 구조 표현에 특화
    • yaml이 json보다 조금 더 느림
  • 콤마 표기를 사용하지 않음

<YAML 문법 정리>

Key: Value 표기

콜론(:)을 사용하여 Key와 Value를 구분한다.
이때 Key: 콜론까지 적었다면 Key: value 다음과 같이 띄어쓰기를 해주어야한다. 콜론이 없다면 스트링으로 인식되어 오류가 발생한다.

들여쓰기(indent)

파이썬과 같이 들여쓰기로 계층 구조를 표현한다. 2칸 혹은 4칸을 지원하며 여러 키를 가진 객체를 포함시키려면 들여쓰기를 해주어야한다.

따옴표

문자열로 :을 사용하려면 따옴표(" or ')로 묶어주어야 한다. score: "3:0"

하지만, 사용에 차이는 존제한다. 큰 따옴표는 개행문자를 인식하지만 작은 따옴표는 개행문자를 문자 그대로 처리해준다.

단순 배열


배열을 표현할 때 하이픈(-)을 사용하여 하위 요소들을 표현한다. 하이픈(-)을 사용할 때 띄어쓰기를 꼭 진행해주어야 한다. 첫 열 : 뒤에는 따로 띄어쓰기를 해주지 않아도 괜찮다.

객체 배열

단순 배열의 리스트를 표현하는 것이 아니라 복잡한 구조체의 리스트를 표현하기 위해서는 하이픈(-)과 key:value 구조로 객체를 포함한 배열 표현이 가능하다.
하이픈(-) 뒤에 key: value 쌍의 구조가 온다면 객체를 포함한 배열인 것이다. 이때, 하이픈(-)은 오직 하나의 객체를 가르킨다고 생각하면 된다.

boolean 값 표현


yaml의 데이터 부분에서 yes, no, true, false 모두 boolean 값으로 인식되는데, 대소문자를 가리지 않는다. yes, no를 문자열로 표현하고 싶다면 "yes" "no" 다음과 같이 표현해야한다.

텍스트 multi Line

\n 개행문자를 문자 사이에 넣어주어야 하는 json과 달리 yaml에서는 다음의 두 방식으로 개행을 처리한다.

  • > 으로 있는 경우에만 줄바꿈 개행문자(\n)로 처리한다.
  • | 보이는 그대로 개행문자(\n)로 처리한다.
  • - 위의 두 방식에 하이픈(-)을 붙혀주게되면 마지막 줄을 개행처리 하지 않는다.
    e.g.) >- |-

변수 기능

yaml에서는 데이터를 변수로 저장해 재사용이 가능하다.

  • &를 사용하여 기호로 변수를 선언
  • * 기호로 변수를 사용
  • <<: *변수명 변수를 사용할 시 받아오면 추가 요소 불필요
    • group 이름이 중복되는 경우 사용 불가능 / group 이름 변경 필요

Multiple Document

yaml에서는 ---을 사용하여 두 파일 데이터를 하나의 파일로 포함시켜 정의가 가능하다. 한 파일에서 모든 configuration을 관리할 수 있는 것.

<그림1>
<그림2>

[그림1]의 두 file을 다음과 같이 하나의 파일로 통합이 가능하다.


참고자료
profile
지적을 환영하는 인프라 냠냠을 시도하는 취준생

0개의 댓글