Ir al contenido principal

¿Qué es YAML? Conceptos básicos, sintaxis y casos de uso

YAML es un formato sencillo y potente para configuraciones, automatización y serialización de datos. ¡Aprende cómo funciona con ejemplos reales!
Actualizado 31 ago 2026  · 14 min leer

Explorar con IA

ChatGPTClaudePerplexity

A lo largo de los años he trabajado con infinidad de archivos de configuración, y YAML destaca por su sencillez y legibilidad. Ya sea al configurar flujos de trabajo en Kubernetes, definir servicios en Docker o estructurar solicitudes de API, YAML hace que las configuraciones complejas sean mucho más manejables. Su estructura limpia basada en sangrías evita el ruido de formatos como XML y, aun así, ofrece flexibilidad.

En esta guía te explico la sintaxis, la estructura, las funciones avanzadas y las buenas prácticas de YAML para que puedas trabajar con él con total 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 etiquetas anidadas al estilo HTML y JSON usa llaves y comillas, como los diccionarios de Python, YAML es más conciso y utiliza la sangría para definir la estructura, lo que lo hace más cómodo para las personas.

YAML admite varios tipos de datos, incluidos escalares (cadenas, números, booleanos), secuencias (listas) y mapeos (pares clave-valor). Se usa ampliamente 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 la extensión .yaml o .yml.

También puedes aprender más sobre YAML en su sitio web.

Sintaxis y estructura de YAML

En esta sección veremos los principios fundamentales de la sintaxis de YAML, incluidos los pares clave-valor, las listas, los datos anidados y los comentarios.

Reglas básicas de sintaxis

Estas son algunas reglas sintácticas básicas de YAML: 

  • La sangría con espacios define la estructura, así que evita las tabulaciones. 
  • Los pares clave-valor siguen la estructura clave: valor, similar a otros lenguajes. 
  • Los guiones al inicio de la línea indican una lista. 
  • El uso de # crea líneas de comentario.
# Aquí tienes un ejemplo de YAML
name: John Doe
age: 30
skills:
  - Python
  - YAML

Pares clave-valor

YAML representa los datos como pares clave-valor, de manera similar a los diccionarios en Python. Esto suele definir información que se pasa a distintos archivos de configuración y ajustes. No es necesario poner comillas en cadenas o claves; basta con escribir la clave y los valores que necesites:

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

Listas en YAML

Las listas se representan con guiones (-). Esto te permite enumerar varios elementos bajo una misma clave. A menudo, los editores de marcado las muestran visualmente como viñetas.

fruits:
  - Apple
  - Banana
  - Cherry

Datos anidados

Las estructuras anidadas permiten representar datos jerárquicos usando la sangría. Piensa en ellas como diccionarios anidados. Con la sangría indicas qué claves son subconjuntos de otras.

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

Comentarios

Los comentarios empiezan con # y los analizadores de YAML los ignoran. Son comentarios de una sola línea.

# Esto es un comentario
username: admin
password: secret

Funciones avanzadas de YAML

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

Cadenas multilínea

YAML admite cadenas multilínea con | (bloque literal) o > (bloque plegado). 

  • El bloque literal | crea una nueva línea \n por cada salto de línea. 
  • El bloque plegado > solo crea una nueva línea cuando hay saltos de línea consecutivos.
literal: |
  This is a
  multi-line string.

folded: >
  This is another
  multi-line string.

Se entiende mejor viendo la salida.

  • Para el bloque | (literal):
This is a
multi-line string.
  • Para el bloque > (plegado):
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 según el formato, pero también permite definirlos explícitamente.

El siguiente ejemplo muestra cómo usar los tipos de datos básicos en YAML:

string_implicit: Hello, YAML!  # No hacen falta comillas salvo que sean necesarias
string_double_quoted: "Supports escape sequences like \n and \t"
string_single_quoted: 'Raw text, no escape sequences'

integer: 42  # Números enteros
float: 3.14  # Números con decimales

boolean_true: true
boolean_false: false

null_value: null  # Valor nulo
null_tilde: ~  # Otra forma de representar null

YAML permite declaraciones de tipo explícitas con !!type cuando sea necesario:

explicit_string: !!str 123  # Fuerza 123 a ser una cadena
explicit_integer: !!int "42"  # Fuerza "42" a ser un entero
explicit_float: !!float "3.14"  # Fuerza "3.14" a ser un float

Como YAML se usa a menudo para datos estructurados, admite:

  • 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 con anclas (&) y referenciarlos después mediante alias (*). Esto ayuda a reducir la redundancia en los archivos de configuración y los hace más limpios y fáciles de mantener.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  host: example.com
  retries: *default_settings  # Reutiliza el valor de retries de defaults

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

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  <<: *default_settings  # Fusiona todos los pares clave-valor de default_settings
  host: example.com  # Esta clave se añade a los datos combinados

Este sería el resultado final:

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

Las anclas y los alias son especialmente útiles en archivos de configuración grandes en los que repetir valores a mano sería ineficiente. Ayudan a mantener los archivos YAML DRY (Don't Repeat Yourself) y facilitan las actualizaciones.

Casos de uso habituales de YAML

YAML se usa ampliamente en desarrollo de software, automatización de infraestructuras y gestión de APIs. Su sintaxis legible lo convierte en un formato preferido para archivos de configuración, serialización de datos e Infrastructure as Code (IaC). Veamos sus aplicaciones más comunes.

Archivos de configuración

YAML se utiliza de forma generalizada para la configuración en aplicaciones como Docker Compose, Kubernetes y canales de CI/CD. Su claridad facilita que cualquiera pueda abrir archivos YAML de Docker y entender qué está pasando.

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

La legibilidad de YAML y el soporte de anclas y alias ayudan a reducir la repetición, lo que lo hace más mantenible 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 usa para serializar datos para APIs y herramientas de gestión de configuración, convirtiendo estructuras de datos complejas en un formato legible para personas y fácilmente analizable por máquinas. 

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

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

La estructura basada en sangrías de YAML elimina sintaxis innecesaria, lo que lo hace ligero, legible y fácil de modificar frente a JSON.

Infrastructure as Code (IaC)

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

  • En Ansible, YAML se usa para escribir playbooks que definen estados del sistema, tareas y dependencias, asegurando una configuración coherente de los componentes de la infraestructura. 
  • Kubernetes utiliza manifiestos YAML para definir recursos como pods, servicios y deployments, lo que permite la orquestación automatizada de aplicaciones en contenedores.

Este es 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

Descubre más sobre cómo se usa YAML en Kubernetes en este curso de Introducción a Kubernetes.

Documentación de APIs

Especificaciones de API como OpenAPI y Swagger usan YAML para definir endpoints y estructuras de datos de forma clara. Con YAML se describen métodos de API, parámetros de solicitud, formatos de respuesta y 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 APIs REST. Esto les permite ofrecer una base clara para generar SDKs de cliente, documentación interactiva y pruebas automatizadas. Este formato estructurado garantiza la coherencia entre implementaciones de API.

Trabajar con archivos YAML

YAML se usa ampliamente para archivos de configuración, automatización y serialización de datos, pero como depende de la sangría, un formato correcto es clave. Así es como puedes leer, escribir, validar y editar YAML de forma eficaz.

Leer y escribir YAML en Python

La biblioteca PyYAML de Python puede analizar y generar YAML.

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

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

Así puedes trabajar con tu archivo de configuración en Python:

import yaml

# Cargar datos YAML
with open("config.yaml", "r") as file:
    data = yaml.safe_load(file)  # safe_load evita la ejecución de código arbitrario

# Modificar datos (opcional)
data["database"]["user"] = "new_user"

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

Si te interesa trabajar con datos JSON en Python, échale un vistazo al completo tutorial de JSON en Python.

Validar archivos YAML

Para asegurar una estructura correcta, puedes usar herramientas que detecten tabulaciones en lugar de espacios o problemas típicos como caracteres repetidos, errores de sintaxis y espacios finales.

Estos son algunos validadores de YAML populares:

Edición de 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:

  • VS Code (con plugins de YAML)
  • PyCharm (compatibilidad nativa)
  • Sublime Text (con resaltado de sintaxis YAML)

Errores comunes a evitar en YAML

A pesar de su sencillez, es fácil cometer errores y tener typos al trabajar con YAML. En esta sección repasamos estos fallos y te damos buenas prácticas para escribir archivos limpios y correctos. ¡Por eso también recomiendo usar un linter o un editor de texto adecuado!

Mezclar tabulaciones y espacios

YAML se basa en espacios para la sangría: nunca mezcles espacios y tabulaciones. Las tabulaciones romperán tu script YAML. Esto es deliberado: distintos sistemas interpretan las tabs de forma diferente y, para minimizar problemas, se prefieren los espacios.

Sangría incorrecta

Mantén una sangría coherente para evitar errores de análisis. Dado que la sangría es el único método de YAML para indicar jerarquía, un mal anidamiento puede causar problemas en tu código. Es fácil «esconder» un par clave: valor donde no toca, así que vigila esas sangrías.

Olvidar las comillas en caracteres especiales

Usa comillas para cadenas que contengan caracteres especiales o espacios. Elementos como barras invertidas, comas, signos de exclamación, etc., necesitan comillas para leerse como cadenas.

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

Con una validación adecuada, una edición estructurada y usando PyYAML en Python, podrás trabajar con archivos YAML de forma eficaz evitando los errores más comunes.

Conclusión

YAML es un formato potente y a la vez sencillo, muy usado en configuración, serialización de datos y automatización de infraestructuras. Si comprendes su sintaxis, estructura y buenas prácticas, podrás trabajar con YAML con soltura en múltiples aplicaciones.

Si te interesa aplicar YAML en escenarios reales:

Conviértete en Ingeniero de Datos

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

FAQs

¿YAML es universal?

Siempre que el origen o el destino de los datos puedan leer YAML, es un método viable y útil para serializar y transportar datos. Asegúrate de enviar los datos a un destino que pueda procesar YAML.

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

YAML en sí es solo un formato de datos, pero surgen riesgos de seguridad al analizar archivos YAML no confiables. El método por defecto yaml.load() en PyYAML de Python puede ejecutar código arbitrario incrustado en YAML, lo que supone un riesgo. En su lugar, usa siempre yaml.safe_load() para evitar la ejecución involuntaria de código malicioso. Del mismo modo, cuando uses YAML en aplicaciones, aplica una validación estricta del esquema para evitar vulnerabilidades de seguridad.

¿Puede YAML admitir variables de entorno?

¡Sí! Aunque YAML no procesa directamente variables de entorno, muchas herramientas (como Docker Compose y Kubernetes) permiten referenciarlas dentro de archivos YAML.

¿Cómo se gestionan los comentarios en YAML?

YAML admite comentarios de una sola línea con el símbolo #, pero no admite comentarios multilínea. Si necesitas comentarios multilínea, un truco habitual es usar una clave ficticia como _comment. Sin embargo, esto es solo una convención y no será ignorada por los analizadores YAML salvo que tu aplicación la 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
Ingeniería de datos

¡Sigue aprendiendo sobre data engineering con estos cursos!

programa

Ingeniero de datos en Python

40 h
Adquiere habilidades demandadas para ingerir, limpiar y gestionar datos de forma eficaz, así como para programar y supervisar canalizaciones, lo que te diferenciará en el campo de la ingeniería de datos.
Ver detallesRight Arrow
Iniciar 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

Tutorial

Python JSON Data: Una guía con ejemplos

Aprende a trabajar con JSON en Python, incluyendo serialización, deserialización, formateo, optimización del rendimiento, manejo de API y comprensión de las limitaciones y alternativas de JSON.
Moez Ali's photo

Moez Ali

6 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

¿Qué es el modelado temático? Introducción con ejemplos

Obtenga información a partir de datos no estructurados con el modelado de temas. Explore conceptos básicos, técnicas como LSA y LDA, ejemplos prácticos y mucho más.
Kurtis Pykes 's photo

Kurtis Pykes

13 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

15 min

Ver MásVer Más