Boost Academy
LearningAssessmentsProfile
Back
  • Live

Formatos de datos: YAML

8h of live classes·HACK A BOSS·Spanish

Skills you will learn

  • Formatos de datos: YAML

Schedules

You need an active plan

To access live courses you need an active plan. We're working on making plans available soon — stay tuned.

There are no open calls right now, but don't miss out: save this course and we'll notify you as soon as a call opens.

Description

Learning objectives

Syllabus

Technical requirements

Prerequisites

Schedule details

Resources

No resources are available yet for this schedule

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.