Поиск по сайту:
Вытапливай воск, но сохраняй мед (К. Прутков).

Основы YAML, которые должен знать каждый инженер DevOps

05.11.2020
Основы YAML, которые должен знать каждый инженер DevOps

YAML приобрел большую популярность за последние несколько лет, поскольку стал частью важнейших инструментов, технологий и процессов DevOps, таких как Ansible, Kubernetes, конвейеры CI/CD и т. д.

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

 

Что такое YAML?

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 должен быть пробел (объяснено позже).
  • YAML чувствителен к регистру.
  • YAML-файл должен заканчиваться расширениями вроде .yamlили .yml.
  • YAML поддерживает кодировку UTF-8, UTF-16 и UTF-32.
Читать  Стоит ли валидация формы на PHP?

Давайте теперь разберемся с синтаксисом 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 состоит из ряда различных элементов. Вместе они могут использоваться для описания самых разных структур.

 

1. Пробелы или отступы

В YAML вы делаете отступ с помощью пробелов, а не табуляции. И между элементами ДОЛЖЕН быть пробел.

Правильная спецификация:

Kind: Service

 

Неправильная спецификация:

Kind:Service

 

Потому что в приведенном выше утверждении нет пробела после двоеточия!

 

2. Комментарии в YAML

Комментарии можно определить, поместив хеш перед элементом ‘#’. Комментарии могут быть сделаны в начале строки в любом месте строки.

Если вы просматриваете наш файл конфигурации YAML, у нас есть три встроенных комментария, таких как «#service port» и т. д.

 

3. Скаляр (пара “ключ-значение”)

Скаляры – это строки и числа, из которых состоят данные на странице. Проще говоря, это пары ключ-значение.

kind: Service
metadata:  
  name: web-app-svc

 

Читать  Переосмысление DevOps: что это такое?

4. Коллекции и списки

Элементы или элементы списка и коллекции – это строки, которые начинаются на одном уровне отступа, начиная с тире, за которым следует пробел.

- web-app-prod 
- prod-deployments 
- prom-monitored

 

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

 

5. Вложенные коллекции

Если вы хотите создать вложенную последовательность с элементами и подпунктами, вы можете сделать это, поместив один пробел перед каждым тире в подпунктах.

- 
 - web-app-prod 
 - prod-deployments 
 - prom-monitored
-  
 - web-app-test 
 - staging-deployments 
 - not-monitored

 

6. Словари

Словари представляют собой формат 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.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 3,20 из 5)
Загрузка...
Поделиться в соц. сетях:


1 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
я z

не соблюдены отступы в примерах

Иван
  • Вкладки НЕ допускаются в YAML. Вы должны использовать пространство для отступа.

Видимо, в оригинале было “Табы…пробелы…”

Это может быть вам интересно


Рекомендуемое
Ищете ли вы новое рабочее кресло, чтобы освежить свой офисный…

Спасибо!

Теперь редакторы в курсе.