HACK A BOSS
FormaciónEvaluacionesPerfil
Volver
  • En directo

Formatos de datos: YAML

8h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • Formatos de datos: YAML

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Curso de iniciación orientado a desarrolladores y perfiles DevOps que trabajan con ficheros de configuración — docker-compose.yml, pipelines de GitHub Actions, manifiestos de Kubernetes — y necesitan leerlos, escribirlos y depurarlos con criterio. El curso cubre los tipos implícitos de YAML y sus trampas más frecuentes, las diferencias de sintaxis con JSON, la lectura de estructuras anidadas siguiendo la jerarquía de indentación, la escritura de YAML válido, el diagnóstico y corrección de errores de parseo, y el ciclo de serialización con PyYAML. Al finalizar, el participante será capaz de producir YAML sintácticamente correcto, identificar la causa de un error de yaml.safe_load() y extraer con Python cualquier valor de un fichero de configuración real.

Al finalizar el curso, el participante será capaz de:

  • Identificar los tipos de datos escalares de YAML — string, integer, float, boolean y null — y reconocer cómo la ausencia de comillas determina el tipo inferido, incluyendo los casos trampa como yes, on o 1.10
  • Distinguir YAML de JSON identificando las diferencias de sintaxis principales — indentación frente a llaves, comentarios, comillas opcionales — y los contextos de uso habituales de cada formato
  • Leer un fichero YAML anidado e identificar el valor de una clave concreta siguiendo la jerarquía de indentación, distinguiendo el acceso por clave en mappings del acceso por índice en sequences
  • Escribir YAML válido para representar una configuración con al menos cuatro tipos distintos, respetando la indentación con espacios, el espacio obligatorio tras : y el uso correcto de guiones en listas
  • Identificar y corregir los errores más frecuentes en un fragmento YAML inválido — tabulaciones, espacio faltante tras :, strings con caracteres especiales sin entrecomillar — hasta que el fichero pase yaml.safe_load() sin excepción
  • Parsear un fichero YAML a un objeto Python con yaml.safe_load() y serializar un diccionario Python a YAML con yaml.dump(), entendiendo por qué safe_load se prefiere sobre load sin Loader explícito
  • Leer e interpretar la estructura de un docker-compose.yml real, identificando los servicios definidos, sus imágenes, los puertos expuestos y las variables de entorno, accediendo a los datos con Python y manejando con .get() las claves opcionales
  1. Tipos implícitos y diferencias con JSON Tipos escalares YAML: string, integer, float, boolean y null; inferencia de tipo en ausencia de comillas; casos trampa en YAML 1.1 — yes/no/on/off como booleanos, 1.10 como float, ~ como null; entrecomillar para forzar el tipo string; diferencias de sintaxis con JSON: indentación frente a llaves y corchetes, comentarios con #, claves sin comillas obligatorias; contextos de uso: YAML para configuración legible por humanos (Docker, GitHub Actions, Kubernetes), JSON para intercambio de datos en APIs

  2. Lectura y escritura de YAML de bloque Jerarquía de indentación como estructura: niveles de anidamiento, mappings y sequences; acceso por clave en dicts Python y por índice en listas tras el parseo; ruta de acceso en estructuras con dos o más niveles de anidamiento; escritura de YAML válido con cuatro tipos distintos: string, integer, boolean, null y lista; espacio obligatorio tras :; guión más espacio para elementos de lista; version: "2.1" entrecomillado para evitar la inferencia como float; indentación consistente con espacios (prohibición explícita de tabulaciones)

  3. Diagnóstico y corrección de errores frecuentes Tabulaciones en lugar de espacios — error found character '\t' that cannot start any token; espacio faltante tras : — interpretación errónea del par clave-valor; strings con caracteres especiales sin entrecomillar — :, #, [, { dentro de un valor provocan mapping values are not allowed here; booleanos Python (True, False) en lugar de los YAML (true, false); lectura del mensaje de error de PyYAML: línea, columna y tipo de error; proceso de corrección hasta que yaml.safe_load() no lanza excepción

  4. PyYAML y ficheros de configuración reales yaml.safe_load() frente a yaml.load() sin Loader — riesgo de deserialización arbitraria con tags !!python/object; yaml.dump() con default_flow_style=False para producir YAML de bloque legible; correspondencia de tipos en ambas direcciones; estructura de un docker-compose.yml real: clave services, sub-claves image, ports y environment; ports como lista de strings "host:contenedor"; environment como mapping o lista de strings CLAVE=valor; extracción con Python de nombre de servicio, imagen y primer puerto; .get() para claves opcionales ausentes en algunos servicios

  • Python 3.11 o superior
  • PyYAML 6.x instalado en el entorno (pip install pyyaml)
  • VS Code o cualquier editor con ejecución de scripts Python
  • Terminal o consola para ejecutar código y leer mensajes de error de PyYAML
  • Fichero docker-compose.yml de ejemplo proporcionado como fixture (no es necesario tener Docker instalado ni ejecutándose)

Ninguno específico sobre formatos de datos o herramientas DevOps. El curso asume que el participante conoce los tipos básicos de Python — strings, enteros, booleanos, listas y diccionarios — y sabe leer y escribir funciones simples con variables y condicionales. No es necesario conocer Docker ni haber trabajado con Kubernetes o GitHub Actions: el objetivo del bloque 4 es leer el fichero como YAML, no entender la semántica de Docker. Es recomendable, aunque no obligatorio, haber completado el curso JSON01 — Formatos de datos: JSON previamente, ya que el bloque 1 establece la comparativa YAML-JSON dando por conocido el formato JSON.