Yaml essentials

YAML

Inicialmente llamado «Yet Another Markup Language» (YAML), que sin embargo no es un Markup Language, si no que ha acabado siendo un lenguage de serialización de datos fácilmente legible por humanos, razón por la que cambió su nombre a «YAML Ain’t Markup Language».

Pensado para ser fácilmente legible por humanos, por lo que sus casos de uso son:
– Ficheros de configuración
– Almacenage de datos

Sintáxis
– Usa (2) espacios para indentar (nunca tabs!)
– La indentación agrupa cosas que van juntas
– Guiones para listas
– Dos puntos para key: values (atención al espacio tras los dos puntos)
– Usa comentarios con # seguido de un espacio en blanco (o tab)

Estilos:
– Block: el habitual
– Flow: es una extensión de JSON

Tipos
– Mappings: key:values
– Secuencias: array o lista de items, uno por línea precedido de un guión
– Escalares: strings, números o booleanos

Podemos partir un string en múltiples líneas (preservando el salto de línea) mediante «|» o sin preservarlo (pese a tener salto de línea dentro del yaml para facilitar la lectura) con «>»

schedule: |
  2018-10-01 - Whatever here
  2018-10-02 - And here
done_by: >
  A large sentence that
  has been broken into pieces
  but will be presented together.

Estructuras:
– Opcionalmente, un yaml file puede empezar con tres guiones. Ésto es obligatorio cuando usas herramientas como «Ansible».
– Los tres guiones también se pueden usar para separar diferentes documentos dentro de un mismo fichero.

Los anchors sirven para reutilizar datos dentro del fichero yaml. Seteamos la línea o el bloque con &anchorname y hacemos referencia a él con *anchorname.

 
locations:
  &EUlocations
  - Spain
  - Portugal
  - Italy
samelocations:
  *EUlocations

Más info
https://yaml.org/start.html
Linux Academy: Yaml essentials