yamlencode 함수
yamlencode 함수 (yamlencode Function)
yamlencode 함수는 주어진 값을 YAML 1.2 블록 문법(block syntax)을 사용하는 문자열로 인코딩해요. YAML 설정이나 데이터를 만들어야 할 때 쓸 수 있어요.
출처: Packer 공식 문서
본문
yamlencode 함수는 주어진 값을 YAML 1.2 블록 문법을 사용해 문자열로 인코딩해요.
경고: 이 함수는 현재 실험적(experimental)이고, 정확한 결과 형식은 피드백에 따라 향후 Packer 버전에서 바뀔 수 있어요. 결과가 바뀌면 지장이 있을 리소스 인자 값을 만드는 데 yamldecode 를 사용하지 마세요. 값의 일관된 문자열 표현을 원한다면 대신 jsonencode 를 사용하세요. YAML이 JSON의 상위 집합(superset)이므로 그 결과도 유효한 YAML이에요.
이 함수는 Packer 언어 값을 아래와 같은 방식으로 YAML 태그에 매핑해요.
| Packer type | YAML type |
|---|---|
string |
!!str |
number |
!!float 또는 !!int |
bool |
!!bool |
list(...) |
!!seq |
set(...) |
!!seq |
tuple(...) |
!!seq |
map(...) |
!!map |
object(...) |
!!map |
| Null value | !!null |
yamlencode 는 위 모든 타입에 대해 암시적(implied) 문법을 사용하므로 명시적인 YAML 태그는 생성하지 않아요.
YAML 형식이 모든 Packer 언어 타입을 완전히 표현할 수는 없기 때문에, yamlencode 결과를 yamldecode 에 넘겨도 완전히 동일한 값이 되지는 않아요. 다만 Packer 언어의 자동 타입 변환 규칙 때문에 실무에서는 이게 문제가 되는 일은 거의 없어요.
Examples (예시)
> yamlencode({"a":"b", "c":"d"})
"a": "b"
"c": "d"
> yamlencode({"foo":[1, 2, 3], "bar": "baz"})
"bar": "baz"
"foo":
- 1
- 2
- 3
> yamlencode({"foo":[1, {"a":"b","c":"d"}, 3], "bar": "baz"})
"bar": "baz"
"foo":
- 1
- "a": "b"
"c": "d"
- 3
yamlencode 는 매핑이나 시퀀스가 비어 있지 않은 한 항상 YAML의 "block style"을 사용해요. flow-style YAML을 만들려면 jsonencode 를 사용하세요. YAML flow-style은 JSON 문법의 상위 집합이에요.
Related Functions (관련 함수)
jsonencode는 YAML 대신 JSON을 사용하는 유사한 작업이에요.yamldecode는 반대 작업을 수행해요. YAML 문자열을 디코딩해 그 표현 값을 얻어요.
더 알아보기 (Learn more)
- 이 페이지는 Packer 공식 문서에서 가져왔어요.