Руководство для начинающих YAML

Руководство для начинающих YAML Изучение

YAML — это не язык разметки или сокращенно YAML — это язык сериализации данных, обычно используемый в файлах конфигурации, таких как Kubernetes, Docker, Ansible и многих других. Его популярность росла с годами, что сделало его своего рода конкурентом JSON.

Хорошо, если YAML не является языком разметки, что это такое?

Как уже упоминалось, YAML — это язык сериализации данных, разработанный для улучшения удобочитаемости за счет использования отступов и собственных структур данных. Думайте об этом как о строгом надмножестве JSON или как о помесье JSON и XML. Этот гибрид позволяет ему делать то, что может JSON, и другие дополнительные функции.

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

Как написать YAML

Написание YAML невероятно интуитивно понятно (я думаю, в этом суть), поскольку он использует синтаксис пары ключ-значение. Таким образом, это похоже на словарь в Python. Однако, в отличие от Python, YAML не позволяет использовать интервалы табуляции; он использует пробелы.

Общий синтаксис:

keyvalue

Чтобы начать новый документ YAML, мы начинаем с трех тире, обозначающих начало нового файла.

Эта функция позволяет вам иметь несколько документов, разделенных тире, в одном файле.

Создайте файл с расширением.YAML и добавьте следующее содержимое.



language
Python

author
Guido van Rossum

country
Netherlands



language
JavaScript

author
Brendan Eich

country
United States



language
Ruby

author
Yukihiro Matsumoto

country
Japan

Как видно из приведенного выше файла, каждый документ в yaml начинается с трех точек, за которыми следуют данные, хранящиеся в парах ключ-значение.

Установите YAML linter

Прежде чем продолжить, давайте подтвердим, что у нас есть действующий файл YAML. Для этого нам необходимо установить линтер YAML.

Линтер — это инструмент, который проверяет и уведомляет разработчика об ошибках программирования, таких как синтаксические ошибки и недопустимые конструкции. Например, он позволяет вам проверить допустимый синтаксис файла.

В нашем примере мы будем использовать yamllint.

Для установки используйте apt как:

sudo apt-get update

sudo apt-get install yamllint -y

После установки мы можем запустить линтер для файла с помощью команды

echo -e ‘this is a validYAML syntax’ | yamllint sample.yaml

Если файл содержит допустимый синтаксис YAML, он не дает нам никаких результатов.

Теперь попробуйте добавить пробелы внутри файла YAML или добавить один дефис внизу как:



language
Python

author
Guido van Rossum

country
Netherlands



language
JavaScript

author
Brendan Eich

country
United States



language
Ruby

author
Yukihiro Matsumoto

country
Japan

Если мы запустим линтер для этого файла, появятся ошибки, как показано ниже:

sample.yaml
15:1 error syntax error
expected <block end>, but found ‘-‘ (syntax)

ПРИМЕЧАНИЕ. Подобно словарям в Python и аналогичным структурам данных в различных языках программирования, пары ключ-значение в документе YAML должны быть уникальными.

Типы данных YAML

YAML поддерживает различные способы представления данных. Они включают:

#: Scalar types

Это наиболее распространенный тип данных в YAML. Они представлены в виде пар «ключ-значение», как показано в примере выше.

Значения в паре могут быть любого типа, например строки, числа, включая шестнадцатеричные, целые числа и т. Д.

#: Strings

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

Ниже приведены примеры действительных строк в YAML.



string
This is a string

string2
“This is also a string”

string
‘so is this one’

ПРИМЕЧАНИЕ. Не забудьте закрыть двойные или одинарные кавычки, если они используются. Следующее приведет к ошибке.

invalid: ‘this is incorrect

Чтобы добавить абзац в файл YAML, используйте знак (больше). Не забудьте добавить пробел перед строкой. Например:

para: >

creating a paragraph

that spans for more than one

line.

#: Numeric Types

Другой тип данных, поддерживаемый в YAML, — это числовые типы. Числовые типы включают целые, десятичные, шестнадцатеричные, восьмеричные и другие числовые типы.

Следующий синтаксис YAML представляет числовые типы.



int
100

hex
0x7f000001

octal
0177

float
127.0

expo
6.022e+23

#: Lists

Списки в YAML указываются одним тире как:

— list

— another

— and another

#: Sequences

Последовательности — это типы данных, используемые для хранения нескольких значений в одном и том же ключе. Например:



server
:

— apache

— 2.07

— LAMPP

#: Mappings

Сопоставление очень похоже на последовательность, но состоит из пар ключ-значение, содержащихся в одной подгруппе.

Вот пример:



Servers
:

— apache
:

name
server1

os
Debian 10

version
2.4.46

— IIS
:

name
iis-v01

os
Windows Datacenter 2019

version
10.0.17763

#: Null

мы устанавливаем null в YAML, используя тильду (~) или строку null, как показано в примере ниже:

tilde: ~

var: null

#: Arrays

Массивы в YAML указываются в квадратных скобках в одной строке. В следующем примере показано определение массивов в YAML.

numbers: [1,2,3,4,5,6,7,8,9,10]

strings: [«Hello»«World»«From»«LinuxHint»]

Комментарии YAML

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

YAML comments begin with an Octothorpe (#).

# This is a comment in YAML

Преобразование YAML в JSON

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

Для таких сценариев мы можем использовать такой инструмент, как yq, который представляет собой синтаксический анализатор YAML / XML для jq.

Чтобы установить его, используйте pip с командой, как показано ниже:

pip3 install yq

ПРИМЕЧАНИЕ. Убедитесь, что у вас установлен jq, поскольку это обязательная зависимость для yq.

Предположим, у нас есть образец файла для создания пода Kubernetes (Kubernetes.yaml) с таким содержимым, как показано:


apiVersion
v1
kind
Pod
metadata
:
name
store-site
labels
:
app
web
spec
:
containers
:
— name
nginx
image
nginx
ports
:
— containerPort
8080
volumeMounts
:
— name
master
mountPath
/var/www/html/nginx
dnsPolicy
Default
volumes
:
— name
home_directory
emptyDir
{}

ПРИМЕЧАНИЕ. Приведенный выше файл предназначен для иллюстрации и может содержать ошибки при использовании в реальном экземпляре Kubernetes.

Чтобы преобразовать файл YAML в JSON, используйте команду:

sudo yq eval -j kubernetes.yaml

После выполнения приведенной выше команды содержимое файла автоматически преобразуется в JSON, как показано ниже:

{
«apiVersion»
«v1»,
«kind»
«Pod»,
«metadata»
{
«name»
«store-site»,
«labels»
{
«app»
«web»
}
},
«spec»
{
«containers»
[
{
«name»
«nginx»,
«image»
«nginx»,
«ports»
[
{
«containerPort»
8080
}
],
«volumeMounts»
[
{
«name»
«master»,
«mountPath»
«/var/www/html/nginx»
}
]
}
],
«dnsPolicy»
«Default»,
«volumes»
[
{
«name»
«home_directory»,
«emptyDir»
{}
}
]
}
}

Это упрощает работу при переходе с JSON на YAML и наоборот.

Заключение

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

Читайте также:  Flutter или Kotlin — для разработки под Android?
Оцените статью
bestprogrammer.ru
Добавить комментарий