¿Que es YAML? . Cada día vemos mas sitios en donde se puede usar YAML (YAML no es un lenguaje de Marcado) . Es un lenguaje que se encarga de simplificar los conceptos de configuración eliminando marcado y simbolos como < o > y las clásicas llaves {} definiendo un formato más neutro y legible para el día a día . Vamos a ver varios ejemplos sencillos de YAML .
--- #comentario #estructura clave valor usuario: nombre: pedro apellidos: gomez edad: 20
Este es un fichero relativamente sencillo de YAML como vemos no usa ningún marcado especial y usa espacios para definir anidamiento entre elementos . En este caso tenemos un usuario que contiene tres propiedad clave: valor en donde se define el nombre apellidos y edad de este. Ademas contiene (—) guiones que definen el inicio del documento así como # que añaden comentarios.
Una vez que tenemos la primera estructura podemos anidar otros elementos como puede ser la dirección .Todos irán anidados a través del usa de espacios y se separarán los pares de clave valor a traves de dos puntos (:) .
usuario: nombre: pedro apellidos: gomez edad: 20 direccion: calle: micalle numero: minumero
Flexibilidad y Listas
YAML es bastante flexible y nos permite también ubicar listas de elementos que comparten el mismo nivel de forma rápida y sencilla
usuario: nombre: pedro apellidos: gomez edad: 20 direccion: calle: micalle numero: minumero cursos: - Java - PHP - WordPress
Flexibilidad
La flexibilidad del lenguaje es alta ya que las propias listas pueden por ejemplo contener parejas de clave valor :
usuario: nombre: pedro apellidos: gomez edad: 20 direccion: calle: micalle numero: minumero cursos: - Java: nivel: 1 duracion: 30 - PHP: nivel: 2 duracion: 30 - WordPress: nivel: 3 duracion: 20
En este caso tenemos un usuario que contiene sus datos que contiene anidada una dirección .
Spring Boot YAML
Podemos configurar nuestras aplicaciones de Spring Boot con YAML y evitar el uso de properties.
spring: datasource: password: password url: jdbc:h2:dev username: SA
Otra de las tecnologías donde YAML brilla es en Kubernetes y sus ficheros de configuración 🙂
apiVersion: v1 kind: Pod metadata: name: mi-nginx labels: tipo: web spec: containers: - name: nginx image: nginx
Este es un ejemplo de como desplegar un contenedor nginx dentro de Kubernetes