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:
---
apiVersion: v1
kind: Pod
metadata:
name: rss-site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
- name: rss-reader
image: nickchase/rss-php-nginx:v1
ports:
- containerPort: 88
#EOF
Alguns exemplos mais elaborados de utilização do YAML podem ser encontrados nesse link.
No dia a dia
A sintaxe do YAML é simplifica, 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.
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!
Validação com erro!
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.
Abraços!
Vida longa e próspera a todos!!
DICA RÁPIDA DE LIVRO
Estou lendo atualmente o livro Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale
Referências
- Dica de livro Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale
- https://yaml.org/refcard.html
- PyChram
- YAML-LINT
- https://github.com/leoml/blog-infraascode/blob/master/posts/validacao-arquivos-yaml/yamllint.py
MENTORIA
Curtiu o blog? Quer trocar uma ideia comigo sobre algum post?
Marca Aqui! É um papo gratuito
oferecido para quem é leitor do blog, podemos falar de temas como: DevOps, SRE e carreira em TI.
Te convido a ver os outros posts do blog Infra-as-Code garanto que tem coisas legais lá!!
|