Saltar al contenido principal

¿Qué es YAML? Comprender los fundamentos, la sintaxis y los casos de uso

YAML es un formato sencillo pero potente para configuraciones, automatización y serialización de datos. ¡Aprende cómo funciona con ejemplos del mundo real!
Actualizado 17 feb 2025  · 14 min de lectura

A lo largo de los años, he trabajado con innumerables archivos de configuración, y YAML ha destacado por su sencillez y legibilidad. Ya sea configurando flujos de trabajo en Kubernetes, definiendo servicios en Docker o estructurando peticiones API, YAML hace que las configuraciones complejas sean más manejables. Su estructura limpia, basada en la indentación, elimina el desorden de formatos como XML, sin dejar de ser flexible.

En esta guía, te guiaré a través de la sintaxis, la estructura, las funciones avanzadas y las mejores prácticas de YAML para que puedas trabajar con él con confianza. 

¿Qué es YAML?

YAML (Yet Another Markup Language / YAML Ain't Markup Language) es un formato de serialización de datos que prioriza la legibilidad y la facilidad de uso. Mientras que XML utiliza una mezcla de etiquetas anidadas similares a HTML y JSON utiliza llaves y comillas, de forma muy parecida a los diccionarios de Python, YAML es más conciso y utiliza la sangría para definir la estructura, lo que lo hace más amigable para el ser humano.

YAML admite varios tipos de datos, como escalares (cadenas, números, booleanos), secuencias (listas) y mapeos (pares clave-valor). Se utiliza mucho en archivos de configuración, automatización de infraestructuras e intercambio de datos, especialmente en herramientas como Kubernetes, Docker y Ansible.

Además, YAML es un superconjunto de JSON, lo que significa que los archivos JSON válidos pueden analizarse como YAML. Los archivos YAML suelen tener una extensión .yaml o .yml.

También puedes obtener más información sobre YAML en su sitio web .

Sintaxis y estructura de YAML

Esta sección explorará los principios fundamentales de la sintaxis YAML, incluidos los pares clave-valor, las listas, los datos anidados y los comentarios.

Reglas básicas de sintaxis

Existen algunas reglas sintácticas básicas para YAML: 

  • La sangría espacial denota estructura, ¡así que evita esas tabulaciones! 
  • Los pares clave-valor siguen una estructura key: value, similar a la de otros lenguajes. 
  • Utilizar guiones al principio de las líneas denotará una lista. 
  • Si utilizas # crearás líneas de comentario.
# Here is an example of YAML
name: John Doe
age: 30
skills:
  - Python
  - YAML

Pares clave-valor

YAML representa los datos como pares clave-valor, de forma similar a los diccionarios en Python. Esto a menudo denotará información dada a diferentes archivos de configuración y ajustes. No es necesario denotar las cadenas o claves con comillas; basta con escribir la clave y los valores necesarios:

location: New York
country: USA
security-level: user

Listas en YAML

Las listas se representan mediante guiones (-). Esto te permitirá listar varios objetos bajo una misma clave. Esto suele representarse visualmente con viñetas cuando lo leen los editores de marcado.

fruits:
  - Apple
  - Banana
  - Cherry

Datos anidados

Las estructuras anidadas permiten la representación jerárquica de datos mediante sangría. Piensa en ellos como si fueran diccionarios anidados. Utilizando la sangría, denotas qué teclas son subconjuntos de otras.

person:
  name: Alice
  details:
    age: 25
    city: London

Comentarios

Los comentarios empiezan por # y son ignorados por los analizadores sintácticos de YAML. Estos comentarios son de una sola línea.

# This is a comment
username: admin
password: secret

Funciones avanzadas de YAML

YAML incluye potentes funciones como cadenas multilínea, tipos de datos y anclajes que hacen que los documentos sean más eficientes y estructurados. En esta sección, exploraremos estas capacidades con ejemplos prácticos.

Cadenas de varias líneas

YAML admite cadenas de varias líneas utilizando | (bloque literal) o > (bloque plegado). 

  • | el bloque literal creará una nueva línea \n para cada salto de línea. 
  • > El bloque plegado sólo hará una línea nueva para los saltos de línea consecutivos.
literal: |
  This is a
  multi-line string.

folded: >
  This is another
  multi-line string.

Lo anterior se entiende mejor mostrando la salida.

  • Para el | (bloque literal):
This is a
multi-line string.
  • Para el > (bloque doblado):
This is another multi-line string.

Tipos de datos en YAML

YAML admite varios tipos de datos, como cadenas, números, booleanos y valores nulos. Detecta automáticamente los tipos basándose en el formato, pero también permite definiciones explícitas de tipos.

El siguiente ejemplo muestra el uso de tipos de datos básicos en YAML:

string_implicit: Hello, YAML!  # No quotes needed unless necessary
string_double_quoted: "Supports escape sequences like \n and \t"
string_single_quoted: 'Raw text, no escape sequences'

integer: 42  # Whole numbers
float: 3.14  # Numbers with decimals

boolean_true: true
boolean_false: false

null_value: null  # Null value
null_tilde: ~  # Another way to represent null

YAML permite declaraciones explícitas de tipos utilizando !!type cuando sea necesario:

explicit_string: !!str 123  # Forces 123 to be a string
explicit_integer: !!int "42"  # Forces "42" to be an integer
explicit_float: !!float "3.14"  # Forces "3.14" to be a float

Como YAML se utiliza a menudo para datos estructurados, es compatible:

  • Listas (secuencias):
fruits:
  - Apple
  - Banana
  - Cherry
  • Diccionarios (mapeos):
person:
  name: Alice
  age: 30
  is_student: false

Anclas y alias

YAML te permite definir valores reutilizables mediante anclas (&) y referenciarlos posteriormente mediante alias (*). Esto ayuda a reducir la redundancia en los archivos de configuración, haciéndolos más limpios y fáciles de mantener.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  host: example.com
  retries: *default_settings  # Reuses the retries value from defaults

La sintaxis <<: permite fusionar pares clave-valor de un anclaje en otro mapeo. Si una clave existe en ambos, el nuevo valor anula al original.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  <<: *default_settings  # Merges all key-value pairs from default_settings
  host: example.com  # This key is added to the merged data

Esta es la estructura final resuelta:

server1:
  retries: 3
  timeout: 30
  host: example.com

Los anclajes y alias son especialmente útiles en archivos de configuración grandes, donde repetir los valores manualmente sería ineficaz. Ayudan a mantener los archivos YAML DRY (Don't Repeat Yourself) y facilitan las actualizaciones.

Casos comunes de uso de YAML

YAML se utiliza mucho en el desarrollo de software, la automatización de infraestructuras y la gestión de API. Su sintaxis legible por humanos lo convierte en el formato preferido para archivos de configuración, serialización de datos e Infraestructura como Código (IaC). Exploremos sus aplicaciones más comunes.

Archivos de configuración

YAML se utiliza ampliamente para la configuración en aplicacionescomo Docker Compose, Kubernetes y pipelines CI/CD. Su facilidad de comprensión hace que cualquiera pueda coger los archivos de configuración YAML de Docker y entender lo que ocurre.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80

La legibilidad de YAML y su compatibilidad con anclas y alias ayudan a reducir las repeticiones, por lo que es más fácil de mantener que JSON o XML.

Aprende más sobre YAML y su uso en Docker en este curso intermedio de Docker.

Serialización y transferencia de datos

YAML se utiliza para serializar datos para API y herramientas de gestión de la configuración, convirtiendo estructuras de datos complejas en un formato legible por humanos y fácilmente analizable por máquinas. 

Por ejemplo, un cuerpo de solicitud de API formateado en YAML:

user:
  id: 123
  name: "John Doe"
  email: "johndoe@example.com"
  active: true

La estructura basada en la indentación de YAML elimina la sintaxis innecesaria, lo que lo hace ligero, legible y fácil de modificar en comparación con JSON.

Infraestructura como código (IaC)

Las herramientas de gestión de la configuración, como Ansible y Kubernetes, aprovechan YAML para definir los estados del sistema, automatizar los procesos y garantizar la coherencia entre entornos.

  • En Ansible, YAML se utiliza para escribir playbooks que definen los estados, tareas y dependencias del sistema, garantizando que los componentes de la infraestructura se configuren de forma coherente. 
  • Kubernetes utiliza manifiestos YAML para definir recursos como pods, servicios y despliegues, permitiendo la orquestación automatizada de aplicaciones en contenedores.

Aquí tienes un ejemplo de configuración de un Pod de Kubernetes:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: app-container
      image: my-app:latest
      ports:
        - containerPort: 8080

Aprende más sobre cómo se utiliza YAML en Kubernetesen este curso de Introducción a Kubernetes .

Documentación API

Las especificaciones API como OpenAPI y Swagger utilizan YAML para definir puntos finales y estructuras de datos de forma fácil de leer. YAML se utiliza para describir los métodos de la API, los parámetros de solicitud, los formatos de respuesta y los métodos de autenticación.

Aquí tienes un ejemplo de especificación OpenAPI en YAML:

openapi: 3.0.0
info:
  title: User API
  version: "1.0"
paths:
  /users:
    get:
      summary: Retrieve a list of users
      responses:
        "200":
          description: Successful response

Las especificaciones OpenAPI, por ejemplo, utilizan YAML para documentar las API RESTful. Esto les permite proporcionar un proyecto claro para generar SDK de cliente, documentación interactiva de la API y pruebas automatizadas. Este formato estructurado garantiza la coherencia entre las implementaciones de la API.

Trabajar con archivos YAML

YAML se utiliza mucho para archivos de configuración, automatización y serialización de datos, pero como se basa en la indentación, un formato adecuado es crucial. A continuación te explicamos cómo puedes leer, escribir, validar y editar YAML con eficacia.

Leer y escribir YAML en Python

La biblioteca PyYAML de Python puede analizar y generar YAML.

Imagina que tienes el siguiente archivo YAML de configuración:

database:
  host: localhost
  port: 5432
  user: admin
  password: secret

A continuación te explicamos cómo puedes trabajar con tu archivo de configuración en Python:

import yaml

# Load YAML data
with open("config.yaml", "r") as file:
    data = yaml.safe_load(file)  # safe_load prevents arbitrary code execution

# Modify data (optional)
data["database"]["user"] = "new_user"

# Write YAML data
with open("output.yaml", "w") as file:
    yaml.dump(data, file, default_flow_style=False)

Si te interesa trabajar con datos JSON en Python, consulta el tutorialcompleto sobre JSON en Python.

Validar archivos YAML

Para garantizar una estructura correcta, puedes utilizar herramientas que comprueben si hay tabuladores en lugar de espacios o problemas extraños como caracteres repetidos, problemas de sintaxis y espacios finales.

Estos son algunos validadores de YAML populares:

Editar YAML

Puedes escribir y editar YAML en cualquier editor de texto, pero las herramientas de linting y el resaltado de sintaxis mejoran la legibilidad.

Algunos de mis editores favoritos:

  • Código VS (con plugins YAML)
  • PyCharm (soporte integrado)
  • Sublime Text (con resaltado sintáctico de YAML)

Errores comunes a evitar en YAML

A pesar de su simplicidad, puedes tener fácilmente problemas y errores tipográficos al trabajar con YAML. Esta sección trata de estos errores y proporciona las mejores prácticas para escribir archivos limpios y correctos. ¡También es la razón por la que recomiendo utilizar un linter o editor de texto!

Mezclar tabuladores y espacios

YAML utiliza espacios para la sangría: nunca mezcles espacios y tabuladores. Las pestañas simplemente romperán tu script YAML. En realidad, se trata de una decisión consciente, ya que los distintos sistemas leen las tabulaciones de forma diferente y, por tanto, para minimizar el impacto, se prefiere utilizar espacios.

Sangría incorrecta

Asegúrate de que la sangría sea coherente para evitar errores de análisis. Dado que las sangrías son el único método de YAML para denotar jerarquía, un análisis incorrecto puede causar problemas en tu código. Puedes meter fácilmente un par de key: value en el lugar equivocado, ¡así que estate atento a esas hendiduras!

Olvidar las comillas para caracteres especiales

Utiliza comillas para las cadenas que contengan caracteres especiales o espacios. Cosas como barras invertidas, comas, signos de exclamación, etc., necesitan comillas para ser leídas como cadenas.

path: "/home/user/documents"
message: "Hello, World!"

Utilizando la validación adecuada, la edición estructurada y PyYAML de Python, puedes trabajar eficazmente con archivos YAML evitando los errores más comunes.

Conclusión

YAML es un formato potente pero sencillo, muy utilizado en configuración, serialización de datos y automatización de infraestructuras. Puedes trabajar eficazmente con YAML en diversas aplicaciones si comprendes su sintaxis, estructura y mejores prácticas.

Si estás interesado en aplicar YAML en escenarios del mundo real:

Conviértete en Ingeniero de Datos

Desarrolla tus habilidades en Python para convertirte en un ingeniero de datos profesional.
Empieza gratis

Preguntas frecuentes

¿Es YAML universal?

Siempre que la fuente de datos o el destino puedan leer YAML, es un método viable y útil de serializar y transportar datos. Asegúrate de que estás enviando datos a un objetivo que puede procesar YAML.

¿Es seguro YAML? ¿Pueden los archivos YAML introducir riesgos de seguridad?

YAML en sí no es más que un formato de datos, pero los riesgos de seguridad surgen al analizar archivos YAML no fiables. El método yaml.load() por defecto en PyYAML de Python puede ejecutar código arbitrario incrustado en YAML, lo que lo hace arriesgado. En su lugar, utiliza siempre yaml.safe_load() para evitar la ejecución involuntaria de código malicioso. Del mismo modo, cuando utilices YAML en aplicaciones, asegúrate de que la validación del esquema es estricta para evitar vulnerabilidades de seguridad.

¿Puede YAML soportar variables de entorno?

Sí. Aunque el propio YAML no procesa directamente variables de entorno, muchas herramientas (como Docker Compose y Kubernetes) permiten hacer referencia a variables de entorno dentro de los archivos YAML.

¿Cómo se gestionan los comentarios en YAML?

YAML admite comentarios de una sola línea utilizando el símbolo #, pero no admite comentarios de varias líneas. Si necesitas comentarios de varias líneas, una solución habitual es utilizar una tecla ficticia como _comment. Sin embargo, esto es sólo una convención y no será ignorado por los analizadores sintácticos de YAML a menos que tu aplicación lo filtre específicamente.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Soy un científico de datos con experiencia en análisis espacial, aprendizaje automático y canalización de datos. He trabajado con GCP, Hadoop, Hive, Snowflake, Airflow y otros procesos de ciencia/ingeniería de datos.

Temas

¡Aprende más sobre ingeniería de datos con estos cursos!

Programa

Data Engineer

40hrs hr
Gain in-demand skills to efficiently ingest, clean, manage data, and schedule and monitor pipelines, setting you apart in the data engineering field.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Clasificación en machine learning: Introducción

Aprende sobre la clasificación en machine learning viendo qué es, cómo se utiliza y algunos ejemplos de algoritmos de clasificación.
Zoumana Keita 's photo

Zoumana Keita

14 min

blog

¿Qué es el análisis de datos? Una guía experta con ejemplos

Explora el mundo del análisis de datos con nuestra completa guía. Conoce su importancia, proceso, tipos, técnicas, herramientas y principales carreras en 2023
Matt Crabtree's photo

Matt Crabtree

10 min

blog

¿Qué es la gestión de datos? Guía práctica con ejemplos

Aprende los conceptos y teorías fundamentales de la gestión de datos, junto con algunos ejemplos prácticos. Utiliza estas habilidades en tu trabajo diario de ciencia de datos para generar datos limpios y útiles para tus modelos.
Tim Lu's photo

Tim Lu

12 min

A tiny computer used for ML

blog

¿Qué es TinyML? Introducción al aprendizaje automático

Conozca TinyML, sus aplicaciones y ventajas, y cómo puede iniciarse en este campo emergente del aprendizaje automático.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

Tutorial

Cómo escribir un Bash Script: Un sencillo tutorial de Bash Scripting

Descubre los fundamentos de las secuencias de comandos bash y aprende a escribir una secuencia de comandos bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

Tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

21 min

Ver másVer más