{{tag>dev yaml todo}}
====== YAML ======
**YAML** signifie **YAML** **A**in't **M**arkup **L**anguage (acronyme récursif: YAML n'est pas un langage à balise). Il a pour but de présenter les données en s'appuyant sur un formalisme facilement lisible par l'homme en limitant au maximum les caractères structurant les données. Il est utilisé par les fichiers de configuration texte de nombreux outils.
Les objectifs recherchés par YAML comprennent notamment:
* Lisibilité: YAML doit être facilement lisible par un opérateur humain;
* Interopérabilité: les données décrites en YAML doivent être portables sur différents langages de programmation;
* Les structures YAML doivent avoir des correspondances avec les structures de données des langages dynamiques;
===== Syntaxe =====
==== Structures de données ====
Les primitives:
* Mappings ou Maps (hashes/dictionnaires),
* Sequences ou (arrays/lists),
* Scalaires (scalars) comprenant les chaînes de caractères et les nombres (strings/numbers)
==== Ancres et balises ====
===== yamllint : Analyseur statique =====
**yamllint** est un analyseur statique, il permet de vérifier la syntaxe des fichiers YAML. Pour l'installer:
apt-get install yamllint
Pour lancer une analyse syntaxique, on passe le fichier en argument:
yamllint --strict config.yml
config.yml
2:1 warning missing document start "---" (document-start)
33:28 error trailing spaces (trailing-spaces)
39:12 error too many spaces after colon (colons)
40:1 error too many blank lines (1 > 0) (empty-lines)
source: https://yamllint.readthedocs.io/en/latest/
===== Référence =====
* http://yaml.org/spec/
* https://www.educative.io/blog/advanced-yaml-syntax-cheatsheet
* https://www.redhat.com/sysadmin/yaml-tips
* https://www.redhat.com/sysadmin/yaml-beginners