Tutoriales

Use yamlint para verificar su YAML en busca de errores

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/playbooksatropelló 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

  1. El primer error ocurre en la línea 1, carácter 1.Implemente correcciones agregando --- en la parte superior del archivo YAML.
  2. 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.
  3. 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-lintque es esencial para cualquier YAML que escriba.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba