YAML приобрел большую популярность за последние несколько лет, поскольку стал частью важнейших инструментов, технологий и процессов DevOps, таких как Ansible, Kubernetes, конвейеры CI/CD и т. д.
В этой статье мы охватим основы YAML, чтобы вы знали, как более плавно работать с конфигурацией инструментов DevOps.
YAML означает «YAML Ain’t Markup Language», первоначально было аббревиатурой «Еще один язык разметки». YAML – это язык «сериализации данных» и, по сути, удобочитаемый формат структурированных данных.
Он разработан для удобного чтения и записи. Функция сериализации объектов YAML представляет собой реальную альтернативу JSON. YAML – это надмножество JSON с использованием области видимости на основе отступов для обозначения структуры, такой как Python.
Вот пример YAML:
--- Student-ID: 314159 First-Name: Linus Last-Name: Torvalds Phone-numbers: - 123.456.7890 - 098.765.4321 - 123.455.4321 Addresses: - Street: Krasnay - City: Krasnodar - State: Kr ---
Если вы не хотите, чтобы при синтаксическом разборе файла YAML повторялись ошибки, вы всегда должны помнить следующее при работе с YAML:
Давайте теперь разберемся с синтаксисом YAML.
Файл YAML используется для описания данных. В файле YAML все содержимое представляет собой набор пар ключ-значение, где значение может быть любым, от строки до дерева.
Разберемся на примере. Это файл манифеста службы Kubernetes.
kind: Service metadata: name: web-app-svc spec: type: NodePort ports: - port: 8080 #Сервисный порт targetPort: 8080 #Порт Pod nodePort: 30012 #Порт узла из диапазона - 30000-32767 selector: app: web-app
Это набор ключевых элементов паров значений: Name: Value.
Как видно из файла выше, файл YAML состоит из ряда различных элементов. Вместе они могут использоваться для описания самых разных структур.
В YAML вы делаете отступ с помощью пробелов, а не табуляции. И между элементами ДОЛЖЕН быть пробел.
Правильная спецификация:
Kind: Service
Неправильная спецификация:
Kind:Service
Потому что в приведенном выше утверждении нет пробела после двоеточия!
Комментарии можно определить, поместив хеш перед элементом ‘#’. Комментарии могут быть сделаны в начале строки в любом месте строки.
Если вы просматриваете наш файл конфигурации YAML, у нас есть три встроенных комментария, таких как «#service port» и т. д.
Скаляры – это строки и числа, из которых состоят данные на странице. Проще говоря, это пары ключ-значение.
kind: Service metadata: name: web-app-svc
Элементы или элементы списка и коллекции – это строки, которые начинаются на одном уровне отступа, начиная с тире, за которым следует пробел.
- web-app-prod - prod-deployments - prom-monitored
Это базовый список, в котором каждый элемент находится в отдельной строке с открывающим тире.
Если вы хотите создать вложенную последовательность с элементами и подпунктами, вы можете сделать это, поместив один пробел перед каждым тире в подпунктах.
- - web-app-prod - prod-deployments - prom-monitored - - web-app-test - staging-deployments - not-monitored
Словари представляют собой формат key: value с отступом содержимого.
ports: - port: 8080 #Сервисный порт targetPort: 8080 #Порт Pod nodePort: 30012 #Порт узла из диапазона - 30000-32767
Вы можете объединять и смешивать коллекции списков и словарей следующим образом:
ports: - port: 8080 #порт service targetPort: 8080 #порт Pod nodePort: - 30012 - 30013 - 30014
Это очень простые концепции YAML, но они необходимы инженеру DevOps.
Для YAML не нужен специальный редактор. Ваш любимый текстовый редактор уже должен поддерживать YAML или при необходимости использовать плагин.
Есть много вещей, которые вы можете изучить глубже. Для этого вы всегда можете обратиться к официальной документации YAML.
не соблюдены отступы в примерах
Видимо, в оригинале было “Табы…пробелы…”