YAML (YAML Ain’t Markup Language) - еще один текстовый формат для записи данных.
YAML более приятен для восприятия человеком, чем JSON, поэтому его часто используют для описания сценариев в ПО. Например, в Ansible.
Синтаксис YAML
Как и Python, YAML использует отступы для указания структуры документа. Но в YAML можно использовать только пробелы и нельзя использовать знаки табуляции.
Еще одна схожесть с Python: комментарии начинаются с символа # и продолжаются до конца строки.
Список
Список - это перечень каких либо элементов.
Список может быть записан в одну строку:
[switchport mode access, switchport access vlan, switchport nonegotiate]
Или каждый элемент списка в своей строке:
- switchport mode access
- switchport access vlan
- switchport nonegotiate
Когда список записан таким блоком, каждая строка должна начинаться с - (минуса и пробела), и все строки в списке должны быть на одном уровне отступа.
Словарь
Словарь - это набор элементов вида ключ-значение.
Словарь может быть записан в одну строку:
{ vlan: 100, name: IT }
Или блоком:
vlan: 100
name: IT
Строки
Строка - это просто набор символов, между символами возможны пробелы.
Строки в YAML не обязательно брать в кавычки. Это удобно, но иногда всё же следует использовать кавычки. Например, когда в строке используется какой-то специальный символ.
Имеется в виду специальный символ для YAML. А это может быть и запятая, и двоеточие, и различного вида скобки, и даже вертикальная черта.
Такую строку, например, нужно взять в кавычки, чтобы она была корректно воспринята YAML:
command: "sh interface | include Queueing strategy:"
Комбинация элементов
Элементы можно произвольно комбинировать. Ниже дан пример словаря, в котором есть два ключа: access и trunk. Значения, которые соответствуют этим ключам - списки команд:
access:
- switchport mode access
- switchport access vlan
- switchport nonegotiate
- spanning-tree portfast
- spanning-tree bpduguard enable
trunk:
- switchport trunk encapsulation dot1q
- switchport mode trunk
- switchport trunk native vlan 999
- switchport trunk allowed vlan
А вот список словарей:
- BS: 1550
IT: 791
id: 11
name: Liverpool
to_id: 1
to_name: LONDON
- BS: 1510
IT: 793
id: 12
name: Bristol
to_id: 1
to_name: LONDON
- BS: 1650
IT: 892
id: 14
name: Coventry
to_id: 2
to_name: Manchester