Entendendo a YAML

Entendendo a YAML
YAML não é marcar a linguagem ou YAML para curta IS IS Data Serialization Language comumente usado em arquivos de configuração, como Kubernetes, Docker, Ansible e muito mais. Sua popularidade cresceu ao longo dos anos, tornando -a uma espécie de concorrente para JSON.

Ok, se a Yaml não é marcar a linguagem, o que é?

Como mencionado, a YAML é uma linguagem serializada de dados desenvolvida para melhorar a legibilidade humana usando o indentação e as estruturas de dados nativos. Pense nisso como um superconjunto rigoroso de JSON ou um cruzamento entre JSON e XML. Este híbrido permite fazer o que o JSON pode e mais recursos adicionais.

O objetivo deste tutorial é apresentá -lo ao YAML, fornecer um guia sobre a sintaxe do idioma, fornecer ferramentas rápidas para trabalhar com a YAML e ensiná -lo a usá -lo para arquivos de configuração e mais.

Como escrever Yaml

Escrever Yaml é incrivelmente intuitivo (acho que esse é o ponto), pois utiliza a sintaxe do par de valores-chave. Assim, é como um dicionário em Python. No entanto, ao contrário do Python, a YAML não permite espaçamento de guias; Ele usa espaços.

A sintaxe geral é:

valor chave

Para iniciar um novo documento YAML, começamos com três traços indicando o início de um novo arquivo.

Esse recurso permite que você tenha vários documentos separados pelos traços em um único arquivo.

Crie um arquivo com um .Extensão YAML e adicione o seguinte conteúdo.

---

Idioma: Python

Autor: Guido van Rossum

país: Holanda
---

Idioma: JavaScript

Autor: Brendan Eich

país: Estados Unidos
---

Idioma: Ruby

Autor: Yukihiro Matsumoto

país: Japão

Como você pode ver no arquivo acima, cada documento no YAML começa com três pontos, seguidos pelos dados armazenados em pares de valor-chave.

Instale um linhador YAML

Antes de prosseguir, vamos confirmar que o que temos é um arquivo YAML válido. Para fazer isso, precisamos instalar um linhador YAML.

Um linhador é uma ferramenta que verifica e notifica o desenvolvedor de erros de programação, como erros de sintaxe e construções inválidas. Por exemplo, ele permite que você verifique a sintaxe válida de um arquivo.

Em nosso exemplo, usaremos Yamllint.

Para instalar, use o APT como:

Atualização de sudo apt-get
sudo apt -get install yamllint -y

Depois de instalado, podemos executar o linhador em relação ao arquivo usando o comando

eco -e 'Isso é válido: sintaxe da YAML' | amostra de Yamllint.Yaml

Se o arquivo contiver sintaxe YAML válido, ele não nos fornecerá nenhuma saída.

Agora, tente adicionar espaços dentro do arquivo YAML ou adicione um único traço na parte inferior como:

---

Idioma: Python

Autor: Guido van Rossum

país: Holanda
---

Idioma: JavaScript

Autor: Brendan Eich

país: Estados Unidos
---

Idioma: Ruby

Autor: Yukihiro Matsumoto

país: Japão
-

Se executarmos o linhador contra esse arquivo, os erros aparecerão, como mostrado abaixo:

amostra.Yaml
15: 1 Erro Sintaxe Erro: esperado, mas encontrado '-' (sintaxe)

OBSERVAÇÃO: Como dicionários em python e estruturas de dados semelhantes em várias linguagens de programação, os pares de valor-chave em um documento YAML devem ser únicos.

Tipos de dados YAML

A YAML suporta várias maneiras de representar dados. Eles incluem:

#: Tipos escalares

Estes são o tipo de dados mais comum no YAML. Eles estão na forma de pares de valor-chave, como mostrado no exemplo acima.

Os valores em um par podem ser qualquer tipo como string, números como hexadecimal, números inteiros e tal.

#: Cordas

A YAML também suporta strings incluídas em cenas únicas ou duplas. Isso não é um requisito, pois o analisador YAML descobrirá, mas pode ser útil, especialmente em cordas com personagens de fuga.

A seguir, são apresentados exemplos de strings válidos em Yaml.

---

String: esta é uma string

String2: “Esta também é uma string”

string: 'então é este'

OBSERVAÇÃO: Certifique -se de fechar as citações duplas ou únicas, quando usado. O seguinte resultará em um erro.

---
inválido: 'Isso está incorreto

Para adicionar um parágrafo em um arquivo YAML, use o sinal (maior que). Lembre -se de adicionar um espaço antes da linha. Por exemplo:

---
Para:>

criando um parágrafo
que se estende por mais de um
linha.

#: Tipos numéricos

O outro tipo de dados suportado no YAML são tipos numéricos. Os tipos numéricos incluem números inteiros, decimais, hexadecimal, octal e outros tipos numéricos.

A sintaxe YAML a seguir representa tipos numéricos.

---

int: 100

Hex: 0x7f000001

Octal: 0177

Float: 127.0

Expo: 6.022E+23

#: Listas

As listas no YAML são especificadas usando um único traço como:

---
- lista
- outro
- e outro

#: Sequências

Sequências são tipos de dados usados ​​para manter vários valores em uma única chave. Por exemplo:

---

servidor:

- apache
- 2.07
- Lamppp

#: Mapeamentos

O mapeamento é bastante semelhante a uma sequência, mas composto por pares de valor-chave, todos contidos em um subgrupo.

Aqui está um exemplo:

---

Servidores:

- apache:

Nome: Server1

OS: Debian 10

versão 2.4.46

- IIS:

Nome: IIS-V01

OS: Windows Datacenter 2019

Versão: 10.0.17763

#: Nulo

Definimos um nulo em Yaml usando um tilde (~) ou a string nula, como mostrado no exemplo abaixo:

---
tilde: ~
var: null

#: Matrizes

Matrizes em YAML são especificadas usando os colchetes em uma única linha. O exemplo a seguir mostra a definição de matrizes no YAML.

---
Números: [1,2,3,4,5,6,7,8,9,10]
Strings: ["Hello", "World", "From", "Linuxhint"]

Comentários da YAML

A YAML também suporta comentários que permitem adicionar informações extras aos dados da YAML. O analisador ignora comentários.

Os comentários da YAML começam com um octothorpe (#).
---
# Este é um comentário no YAML

Processe Yaml para JSON

Em alguns casos, podemos precisar converter YAML em JSON. Como os dois estão intimamente relacionados, faz sentido precisar de um do outro.

Para tais cenários, podemos usar uma ferramenta como YQ, que é um analisador Yaml/XML para JQ.

Para instalá -lo, use PIP com o comando como mostrado:

PIP3 Instale YQ

OBSERVAÇÃO: Certifique -se de ter o JQ instalado, pois é uma dependência necessária para YQ.

Suponha que tenhamos uma amostra do arquivo de criação do Kubernetes (Kubernetes.yaml) com o conteúdo como mostrado:

---
APIVERSION: V1
Kind: Pod
Metadados:
Nome: Site Site
Rótulos:
App: Web
especificação:
containers:
- Nome: nginx
Imagem: nginx
Portas:
- Containerport: 8080
Volumemounts:
- Nome: Master
MountPath:/var/www/html/nginx
DNSpolicy: Padrão
volumes:
- Nome: home_directory
vazio:

OBSERVAÇÃO: O arquivo acima é para fins de ilustração e pode conter erros se usado em uma instância real de Kubernetes.

Para converter o arquivo YAML em JSON, use o comando:

Sudo YQ Eval -J Kubernetes.Yaml

Ao executar o comando acima, o conteúdo do arquivo é automaticamente convertido em JSON, como mostrado abaixo:


"APIVERSION": "V1",
"Kind": "Pod",
"Metadata":
"Nome": "Store Site",
"Rótulos":
"App": "Web"

,
"Spec":
"containers": [

"Nome": "nginx",
"Imagem": "nginx",
"Portos": [

"Containerport": 8080

],
"Volumemounts": [

"Nome": "Mestre",
"MountPath": "/var/www/html/nginx"

]

],
"DNSpolicy": "padrão",
"Volumes": [

"Nome": "home_directory",
"vazio":

]

Isso facilita as obras ao mudar de JSON para YAML e vice -versa.

Conclusão

A YAML é uma ferramenta incrivelmente poderosa que permite criar arquivos de configuração altamente legíveis e compatíveis para serviços de suporte. Usando os conceitos neste tutorial, você está em posição de criar documentos YAML complexos para seus aplicativos ou aplicativos que suportam YAML.

Obrigado e feliz codificação!