Ferramentas Validação de Arquivos YAML

Validação de arquivos YAML

YAML é um acrônimo que significa “YAML Ain’t Markup Language” numa tradução livre seria “YAML não é uma linguagem de marcação”, na prática ele é um modelo de serialização de dados que facilita a visualização, organização de informações.

Atualmente muitas ferramentas utilizam arquivos no formato YAML para guardar configurações, como é o caso do Kubernetes e na criação de scripts de automação como é o caso do Ansible.

O YAML possui uma sintaxe bem simples, e com ela pode-se criar listas, dicionários, conforme o exemplo a seguir:

Alguns exemplos mais elaborados de utilização do YAML podem ser encontrados nesse link.

No dia a dia

A sintaxe do YAML é simpplifica, mas no dia a dia a gente comete erros de formatação ou muitas vezes estamos precisando achar um erro de formatação resultando de um CTRL+C, CTRL+V, para situações como essa eu recomendo três maneiras de resolver esse problema, são elas:

Solução 01

Se você é “roots” mesmo e estiver em um SHELL remoto editando um arquivo direto no servidor ou mesmo validando configurações para depois fazer um commit recomendo usar um validador de linha de comando no terminal, eu usei uma solução caseira como essa:

 1#! /usr/bin/python3.6
 2
 3import yaml
 4import sys
 5
 6if ( len(sys.argv) == 0 ) : 
 7  print ("SORRY!! No file receivid.")
 8  sys.exit(1)
 9
10
11with open((sys.argv[1]), 'r') as stream:
12 try:
13  yaml.safe_load(stream)
14  print("[OK] - File (%s) validated with success! " % sys.argv[1])
15 except yaml.YAMLError as exc:
16  print("[Error] - File (%s) not valid !" % sys.argv[1])
17  print(exc)
18
19#EOF

Referência: Infra-as-code-YAML-Lint.py

Mode de usar


leo@infraascode$ ./yamllint.py yaml_example.yml
[OK] - File (yaml_example.yml) validate with success!

leo@infraascode$ ./yamllint.py yaml_example_not_ok.yml
[Error] - File (yaml_example_not_ok.yml) validated with error!
while parsing a block mapping
 in "yaml_example_not_ok.yml", line 2, column 1 
expected <block end>, but found '<block mapping start>' 
 in "yaml_example_not_ok.yml", line 6, column 2

Referência: Infra-as-code-YAML-Lint.py

Solução 02

Se você estiver editando arquivos localmente do conforto do seu laptop, recomendo a utilização de uma IDE como o PyChram. Uma IDE?!!! Siiimmm!!Por que não, estamos 2020, ele tem suporte para várias linguagens de programação e modelos de arquivos de templates além do validador interno para arquivos YAML. Ele também faz o realce de cores de fundo e fontes para deixar seu código todo colorido, valida graficamente erros em arquivos YAML.

Referência: PyChram

 

Solução 03

Por fim, se você quer fazer uma validação rápida ou já quer escrever um pequeno trecho no formato certo, recomendo utilizar o YAML-LINT.

Validação bem sucedida! Referência: YAML-LINT

Valicação com erro! Referência: YAML-LINT

 

Conclusão

A sintaxe de um arquivo YAML foi feita para ser fácil para nós humanos, por experiência própria, quando a gente cria os arquivos, com poucas linhas é simples e bem fácil fazer uma validação, mas, em algum momento nessa vida de sysadmin vamos nos deparar com um arquivos com mais de mil linhas e ai meu jovem vai ficar difícil não utilizar nenhuma ferramenta para esse trabalho.


Convido você a ver os outros posts do blog Infra-as-Code.


Nossos contatos são:
Email – [email protected]
Twitter - @infraascodebr


--- --- IMPORTANTE --- ---
As opiniões aqui expressas são pessoais e de responsabilidade única e exclusiva do autor, elas não refletem necessariamente a posição das empresas que eu trabalho(ei) e/ou presto(ei) serviço.