yamlencode Функция
yamlencode кодирует заданное значение в строку, используя блочный синтаксис YAML 1.2.
Эта функция сопоставляет значения языка OpenTofu с тегами YAML следующим образом:
| Тип OpenTofu | Тип YAML |
|---|---|
string |
!!str |
number |
!!float или !!int
|
bool |
!!bool |
list(...) |
!!seq |
set(...) |
!!seq |
tuple(...) |
!!seq |
map(...) |
!!map |
object(...) |
!!map |
| Значение null | !!null |
yamlencode использует подразумеваемый синтаксис для всех перечисленных выше типов, поэтому не генерирует явные теги YAML.
Поскольку формат YAML не может полностью представить все типы языка OpenTofu, передача результата yamlencode в yamldecode не приведёт к получению идентичного значения, однако правила автоматического преобразования типов языка OpenTofu означают, что на практике это редко становится проблемой.
YAML является надмножеством JSON, поэтому, когда это возможно, мы рекомендуем вместо этого генерировать JSON с помощью jsonencode, даже если удалённая система поддерживает YAML. Синтаксис JSON эквивалентен YAML в потоковом стиле, и OpenTofu может отображать подробную информацию о структурных изменениях значений JSON в планах, тогда как YAML в блочном стиле OpenTofu будет рассматривать просто как обычную многострочную строку. Однако генерация YAML может повысить удобочитаемость, если люди будут напрямую читать или изменять полученное значение в удалённой системе.
Примеры
> 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"
- 3yamlencode всегда использует для отображения сопоставлений и последовательностей блочный стиль YAML, кроме случаев, когда сопоставление или последовательность пусты. Чтобы сгенерировать YAML в потоковом стиле, используйте вместо этого jsonencode: потоковый стиль YAML является надмножеством синтаксиса JSON.
Связанные функции
-
jsonencodeвыполняет аналогичную операцию, используя JSON вместо YAML. -
yamldecodeвыполняет обратную операцию — декодирует строку YAML, чтобы получить представляемое ею значение.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/functions/yamlencode/