YAML, что означает «YAML — это не язык разметки», — это удобочитаемый язык сериализации данных, который обычно используется в мире DevOps. Он часто используется в качестве формата файла конфигурации и может быть легко интерпретирован как людьми, так и машинами.

Если вы инженер DevOps и хотите узнать больше о YAML, вы обратились по адресу. В этом руководстве мы начнем с основ синтаксиса YAML и перейдем к более сложным концепциям.

Основы синтаксиса YAML

По сути, файл YAML представляет собой просто набор пар ключ-значение. Каждый ключ находится слева от двоеточия, а соответствующее значение — справа. Вот пример простого файла YAML:

key: value

Вы также можете указать несколько пар ключ-значение в одном файле YAML:

key1: value1
key2: value2
key3: value3

Вы можете использовать пробелы или табуляции для отступа пар ключ-значение, но будьте последовательны в использовании пробелов или табуляции во всем файле.

Списки в YAML

В YAML вы можете создавать списки, разделяя элементы тире и пробелом. Вот пример списка в YAML:

list:
  - item1
  - item2
  - item3

Вы также можете указать пары ключ-значение в списке:

list:
  - key1: value1
  - key2: value2
  - key3: value3

Карты в YAML

В YAML вы можете создавать карты (также известные как словари или ассоциативные массивы), указав пару ключ-значение внутри блока. Вот пример карты в YAML:

map:
  key1: value1
  key2: value2
  key3: value3

Вы также можете вкладывать карты в карты:

map:
  key1:
    nestedKey1: nestedValue1
    nestedKey2: nestedValue2
  key2: value2
  key3: value3

Расширенные концепции в YAML

Теперь, когда вы знакомы с основами, давайте взглянем на некоторые более продвинутые концепции YAML.

Якоря и ссылки

В YAML вы можете использовать якоря и ссылки, чтобы избежать многократного повторения одних и тех же данных. Чтобы создать якорь, используйте символ &, за которым следует имя якоря. Чтобы сослаться на якорь, используйте символ *, за которым следует имя якоря.

Вот пример использования якорей и ссылок в YAML:

anchoredValue: &anchorValue value
key1: *anchorValue
key2: *anchorValue

В этом примере key1 и key2 имеют значение value, так как они оба ссылаются на привязку anchorValue.

Псевдонимы

Псевдонимы похожи на якоря и ссылки, но они позволяют вам ссылаться на весь блок данных, а не только на одно значение.