Las computadoras prosperan en la consistencia. La razón por la que los lenguajes de programación y marcado como YAML tienen sintaxis es que las computadoras no pueden obtener contexto de los datos. En lenguaje natural, usamos convenciones como comas, comillas y paréntesis para ayudarnos mutuamente a analizar lo que escribimos. Sin embargo, incluso sin estos caracteres auxiliares, la mayoría de nosotros aún podemos entender esta comunicación. Las computadoras no tienen esta capacidad, por lo que dependen de reglas que dictan qué tipo de datos proporciona como entrada.
Debido a que las computadoras se basan en gramáticas, ha surgido toda una clase de aplicaciones cuya única tarea es validar la entrada antes de que llegue a la aplicación deseada.
Una especie de pelo corto Diseñado para detectar errores en los datos antes de procesarlos. Esto evita que usted (o su flujo de trabajo automatizado) cometa errores en etapas críticas de la operación.
Esta yamllint
Como sugiere el nombre, el comando está diseñado para eliminar YAML.Para los libros de jugadas de Ansible, existe ansible-lint, que podría pensar que generará yamllint
Inútil en su sistema.De todos modos, eso yamllint
Esto hace ansible-lint
Reporte violaciones genéricas de YAML, es un buen filtro de respaldo cuando el sistema que está usando no lo admite o no lo admite actualmente ansible-lint
instalado en él.
Instalar en pc
La forma más fácil de instalar yamllint
Con pip
:
$ python3 -m pip install --user yamllint
Confirmar instalación:
$ yamllint --version
yamllint X.Y.Z
usar yamlint
Cree este sencillo libro de jugadas. Crea un conjunto de directorios en el host.He incluido errores intencionales para que yamllint
devolverá una salida útil:
- hosts: localhost
tasks:
- name: Create directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- '~/Foo' # this is wrong
- '~/Bar' # this is wrong
- '~/Baz' # this is wrong
Guardar este libro de jugadas como standard_dirs.yaml
en la estructura del directorio ~/Ansible/playbooks
atropelló yamllint
Pedido:
$ cd ~/Ansible
$ yamllint playbooks/standard_dirs.yaml
playbooks/standard_dirs.yaml
1:1 warning missing document start "---" (document-start)
8:7 error wrong indentation: expected 8 but found 6 (indentation)
10:16 error no new line character at the end of file (new-line-at-end-of-file)
Devuelve una advertencia y dos errores. Cada excepción enumerada comienza con un número de línea y una posición de carácter. Convenientemente, la solución generalmente se indica explícitamente en el mensaje de error.
[ Learn more about Ansible by reading an excerpt from Jesse Keating’s eBook Mastering Ansible. ]
corregir errores
- El primer error ocurre en la línea 1, carácter 1.Implemente correcciones agregando
---
en la parte superior del archivo YAML. - La segunda excepción ocurre en el séptimo carácter de la línea 8. El texto del error indica que se trata de un error de sangría y puede hacerlo agregando dos espacios adicionales antes de cada guión (
-
) caracteristicas. Si no conoce el motivo de estos errores, lea mi artículo YAML para Ansible. - El último error ocurre en el carácter 16 en la línea 10. Solucione esto agregando una nueva línea (¡pero no una línea en blanco!) al final del archivo. La forma más fácil que he encontrado es:
$ sed -i -e '$a\' playbooks/standard_dirs.yaml
Revisa tu trabajo
Correr yamllint
Vuelva a verificar que su solución cumpla con los requisitos de sintaxis de YAML:
$ yamllint playbooks/standard_dirs.yaml
$
Sin salida significa que no hay errores, por lo que los cambios en el archivo corrigen errores y advertencias.
Depilación en todo lo que se pueda eliminar
Si está escribiendo código o marcado en un idioma que tiene un linter disponible, ejecute el linter.Esta yamllint
Los comandos son una herramienta invaluable cuando estás escribiendo YAML.Pasa por alto algunas advertencias específicas de Ansible, pero es un buen comando alternativo para playbooks, un buen comando con ansible-lint
que es esencial para cualquier YAML que escriba.