¿Qué es YAML?
Explore IBM watsonx Code Assistant for Red Hat Ansible Lightspeed Reserve una demostración en vivo
Compañeros de trabajo miran el monitor de la computadora donde se muestra código

Fecha de publicación: 11 de diciembre de 2023
Colaboradores: Tasmiha Khan, Michael Goodwin

¿Qué es YAML?

YAML es un lenguaje de serialización de datos versátil y legible que se usa habitualmente para escribir archivos de configuración.

Proporciona un formato estandarizado para representar datos estructurados de una manera que sea fácilmente comprensible para los humanos e interpretable por las máquinas. "YAML" es un acrónimo que significa "Lenguaje de marcado YAML" o "Otro lenguaje de marcado". Lo primero pretende subrayar que el lenguaje está destinado a datos más que a documentos.

En esencia, YAML está diseñado pensando en la simplicidad y la legibilidad. Utiliza una sintaxis limpia y minimalista, basada en el uso de sangrías, pares clave-valor y convenciones intuitivas. Este enfoque permite a los desarrolladores y usuarios expresar estructuras de datos complejas en un formato que se asemeja al lenguaje natural y es fácil de comprender de un vistazo.

El énfasis en la legibilidad humana hace que YAML sea especialmente adecuado para varias aplicaciones, como los archivos de configuración (config) y el intercambio de datos entre diferentes sistemas. Su estructura sencilla e intuitiva mejora su usabilidad en diferentes dominios, lo que permite a los usuarios definir y organizar los datos de una manera clara y comprensible. YAML admite caracteres Unicode, lo que permite la representación de una amplia gama de caracteres y símbolos de diferentes idiomas y conjuntos de caracteres. El resultado de un YAML válido es una especificación sin errores de sintaxis.

La adaptabilidad de YAML lo convierte en una opción versátil en una amplia gama de aplicaciones. Desde la gestión de la configuración hasta el intercambio y la automatización de datos, la facilidad de uso de YAML abarca varios dominios, ofreciendo un medio accesible y estructurado para representar y gestionar los datos.

Solicite una demostración

Este es el momento de mejorar su automatización con el poder de la IA generativa. Programe una demostración personalizada de 30 minutos con uno de nuestros expertos para ver IBM watsonx Code Assistant for Red Hat Ansible Lightspeed en acción.

Contenido relacionado

Suscríbase al boletín de IBM

Sintaxis y atributos de YAML

Hay varios atributos y elementos clave dentro de la sintaxis YAML. Es vital comprender la estructura, los tipos de datos y las convenciones que se utilizan en los archivos YAML para garantizar la representación y legibilidad eficientes de los datos.

Mapa (diccionario)

En YAML, los diccionarios se representan como mapas. Son una colección de pares de clave-valor donde cada clave está asociada a un valor. Esta estructura de datos se asemeja al concepto de diccionarios o mapas que se encuentran en varios lenguajes de programación. 

Sangrías

La sintaxis de YAML depende en gran medida del uso de sangrías y del número de espacios para representar la estructura de los datos. Los espacios en blanco, no los caracteres de tabulación, que están prohibidos en YAML, se utilizan en YAML para indicar jerarquía y anidamiento. Debido a que YAML depende de las sangrías para la estructura, es importante mantener la coherencia en todo el documento YAML.

Las nuevas líneas representan saltos de línea o el final de una línea dentro del formato YAML utilizado para separar diferentes elementos.

Comillas

Para la mayoría de los escalares en YAML, no se necesitan comillas. Sin embargo, las comillas pueden ser necesarias para evitar confusiones en determinados escenarios, como alrededor de una cadena de texto que contiene caracteres especiales y podría confundirse con la sintaxis de YAML. O, por ejemplo, si hay una cadena formada solo por "verdadero" que no quiere convertir a un booleano. En casos como estos, se pueden usar comillas simples o dobles, según los datos y lo que se deba expresar.

Pares clave-valor

YAML emplea un formato sencillo de par clave-valor separado por dos puntos para la representación de asociaciones de datos.  

Por ejemplo:

profesión: profesor

Secuencias (matrices)

Las secuencias (matrices o listas en otros lenguajes) permiten definir una lista de elementos en YAML. La sangría separa la secuencia de la matriz principal y cada elemento de la lista comienza con un guión (-) seguido de un espacio. Todos los elementos de la secuencia deben tener la misma sangría.

Por ejemplo:

frutas:
    -manzana
    -naranja
    -pera

Las secuencias también se pueden representar en una secuencia de flujo mediante el uso de corchetes y comas.1

Frutas: [manzana, naranja, pera]

Tipos de datos

YAML admite varios tipos de datos, como cadenas, datos enteros, flotantes, booleanos y valores nulos. Estos tipos de datos ofrecen flexibilidad para representar diferentes tipos de información.

Comentarios

YAML admite comentarios denotados por el símbolo #. Los comentarios ayudan a agregar explicaciones, notas o contexto en los archivos YAML.

Cadenas multilínea

YAML admite cadenas multilínea, lo que permite que el texto abarque varias líneas sin necesidad de saltos de línea explícitos. Las cadenas multilínea son útiles para incluir bloques de texto en documentos YAML.

Archivos YAML

Los archivos YAML suelen usar extensiones como .yaml o .yml. Las convenciones para nombrar y estructurar archivos YAML garantizan la coherencia e interpretación adecuada de los datos. Los archivos YAML también se pueden leer en Perl, Ruby y Python.

YAML, JSON y XML

YAML y JSON comparten similitudes en la representación de los datos, sin embargo, YAML se destaca por su legibilidad, expresividad y soporte para estructuras de datos complejas. YAML es un superconjunto de JSON, lo que significa que contiene todas las funciones de JSON, además de funciones y comandos ampliados.

JSON (JavaScript Object Notation) utiliza una sintaxis más explícita con llaves {}, corchetes [] y comas. Si bien es conciso y ampliamente utilizado, la sintaxis de JSON podría volverse menos legible, especialmente en conjuntos de datos más grandes. El soporte de JSON para estructuras de datos es comparativamente limitado, principalmente con matrices, objetos y valores escalares.

JSON suele preferirse por su compatibilidad cruzada para el intercambio de datos en aplicaciones web y API, mientras que YAML se utiliza más comúnmente en escenarios donde se requiere legibilidad humana y estructuras de datos más complejas, como archivos de configuración y ciertos tipos de documentación e intercambio de datos.2

En comparación con XML, YAML ofrece una alternativa más concisa y fácil de usar, haciendo hincapié en la simplicidad y facilidad de comprensión en la representación e intercambio de datos. YAML y XML tienen diferencias fundamentales en la sintaxis y el propósito.

XML es muy estructurado y se basa en etiquetas explícitas de apertura y cierre, lo que lo hace un poco confuso. En cambio, YAML emplea una estructura más sencilla y natural, centrada en la legibilidad mediante sangrías y pares clave-valor, sin etiquetas de cierre explícitas.

Casos de uso de YAML

YAML se puede usar con todos los lenguajes de programación y a menudo se utiliza para archivos de configuración, así como para el intercambio y la documentación de datos. Su formato legible por humanos mejora la claridad de la documentación.

YAML y DevOps

YAML desempeña un papel fundamental en DevOps y es fundamental en la automatización, orquestación y gestión de la configuración. Dentro de las prácticas de DevOps, los archivos YAML sirven como planos técnicos para definir secuencias de acciones y configuraciones en un formato fácil de entender. Estos archivos se utilizan para describir con precisión los pasos y procedimientos necesarios para la automatización, lo que permite una representación clara y concisa de los flujos de trabajo complejos.

Infraestructura como código (IaC)

YAML se utiliza para definir la infraestructura como código, que es el uso del código, en lugar de los procesos manuales, para definir y gestionar la infraestructura de TI. IaC permite una configuración de infraestructura de TI más eficiente y coherente. YAML se puede utilizar para definir la configuración deseada de la infraestructura, como máquinas virtuales, redes y almacenamiento, así como para describir la relación entre los componentes de la infraestructura de TI.

Despliegues

YAML se utiliza para crear archivos de implementación para aplicaciones que especifican la configuración de aplicaciones, dependencias, límites de recursos y otra información importante para la eficacia en la implementación y el rendimiento de las aplicaciones. Los archivos YAML ayudan a reducir los errores de implementación y aumentan la velocidad de entrega de las aplicaciones a través del control de versiones y la automatización.

Configuración de canalización de CI/CD

YAML puede desempeñar un papel importante en las canalizaciones de integración continua y entrega continua (CI/CD), un importante flujo de trabajo ágil de DevOps. De manera similar a la configuración e implementación de infraestructura, los archivos YAML se utilizan para definir los pasos y destinos de la canalización y, en última instancia, para ayudar a automatizar el proceso de CI/CD.

Herramientas YAML y DevOps

Muchas herramientas y programas utilizados por los equipos de DevOps aprovechan YAML, por ejemplo:

Ansible

Ansible es una aplicación de software de automatización de código abierto que utiliza archivos con formato YAML, conocidos como playbooks, para definir tareas y procedimientos de automatización. ​​Las plantillas YAML permiten a los usuarios programar la automatización de tareas repetitivas sin conocimientos de un lenguaje de programación avanzado.3

Con IBM watsonx Code Assistant for Red Hat Ansible LightSpeed, los usuarios pueden escribir una tarea en inglés simple y recibir recomendaciones de código YAML para tareas de automatización. Estas recomendaciones de código se utilizan para crear Playbooks de Ansible.3

Kubernetes

Kubernetes es una plataforma de orquestación de contenedores de código abierto que se utiliza para automatizar la implementación, el escalado y la gestión de aplicaciones en contenedores. El funcionamiento de Kubernetes se basa en "estados", y se trata de alcanzar un estado deseado a partir de uno actual según instrucciones específicas. Los archivos YAML se pueden utilizar para crear recursos de Kubernetes como pods, objetos e implementaciones, así como para especificar y comunicar el estado deseado de los objetos de Kubernetes.

GitHub

GitHub, una plataforma basada en la web para el control de versiones y la colaboración en el desarrollo de software, incorpora YAML para definir flujos de trabajo. Las configuraciones basadas en YAML en los repositorios de GitHub permiten la configuración de flujos de trabajo automatizados para la integración continua y la administración de proyectos.

docker compose

Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker de varios contenedores.4  Los archivos YAML se utilizan en Docker Compose para configurar los servicios de una aplicación.

Intercambio de datos en varios lenguajes

YAML es independiente del lenguaje, lo que lo hace ideal para compartir datos entre distintos lenguajes. Una vez definido un archivo YAML, se puede ejecutar en otros lenguajes de programación, como Python o Ruby.

Archivos de registro

Los archivos de registro son archivos de datos textuales generados por computadora que contienen información sobre las operaciones y patrones dentro de las aplicaciones, sistemas, servidores y otros recursos o dispositivos de TI. Se utilizan para medir el rendimiento de los recursos y desempeñan un papel crucial en la observabilidad del sistema. Debido a su simplicidad, YAML se utiliza para crear archivos de registro intuitivos y ordenados.

Ventajas de YAML

YAML se ha convertido en un lenguaje popular de serialización de datos por varias razones, entre las que se incluyen su simplicidad, compatibilidad y utilidad en la creación de archivos de configuración.

Simplicidad

La sintaxis de YAML se asemeja a las estructuras del lenguaje natural. Su simplicidad y diseño minimalista hacen que sea fácil de comprender, tanto para los desarrolladores como para los usuarios no técnicos, mejorando la comprensión y reduciendo los errores.

Uso para archivos de configuración

YAML es adecuado para archivos de configuración debido a su formato estructurado y legible. Simplifica el proceso de definición de configuraciones mediante el uso de sangrías y pares de clave-valor, lo que lo hace manejable y adaptable para varias aplicaciones de software.

Compatibilidad

La independencia de YAML con respecto a las plataformas garantiza la compatibilidad entre diferentes sistemas y lenguajes de programación, lo que facilita el intercambio de datos y la interoperabilidad entre varias plataformas y entornos.

Herramientas para el procesamiento de YAML

PyYAML es una biblioteca de Python destacada que se usa para analizar y trabajar con archivos YAML en aplicaciones basadas en Python. Proporciona métodos para cargar datos YAML en objetos Python. PyYAML permite la conversión de archivos YAML en estructuras de datos prácticas dentro de las aplicaciones Python y viceversa.5

Herramientas como PyYAML y otros analizadores y validadores de YAML, como yamllint y YAML Validator, desempeñan un papel importante en preservar la precisión, validez e integridad de los archivos YAML. Su función principal consiste en validar la sintaxis de YAML, identificar errores y garantizar la coherencia dentro de los documentos de YAML. 

Soluciones relacionadas
IBM watsonx Code Assistant for Red Hat Ansible LightSpeed

IBM watsonx Code Assistant for Red Hat Ansible Lightspeed desmitifica el proceso de creación de Ansible Playbook a través de recomendaciones de contenido impulsadas por IA generativa. Creado específicamente para acelerar la automatización de TI, el producto está diseñado para ofrecer recomendaciones de contenido de automatización para una experiencia Ansible mejorada.

Explore watsonx Code Assistant for Red Hat Ansible Lightspeed Reserve una demostración en vivo

IBM watsonx Code Assistant

IBM watsonx Code Assistant aprovecha la IA generativa para acelerar el desarrollo mientras mantiene los principios de confianza, seguridad y cumplimiento de normas en su núcleo. Los desarrolladores y operadores de TI pueden acelerar los esfuerzos de modernización de aplicaciones y generar automatización para escalar rápidamente los entornos de TI.

Conozca IBM watsonx Code Assistant

Dé el siguiente paso

¿Está listo para avanzar en la automatización con tecnología de IA generativa? Programe una demostración en vivo o hable con uno de nuestros expertos y vea qué puede hacer watsonx Code Assistant for Red Hat Ansible LightSpeed.

Explore watsonx Code Assistant for Red Hat Ansible Lightspeed Reserve una demostración en vivo
Notas de pie de página

1 “Cómo representar matrices en YAML " (enlace externo a ibm.com),” Tarun Telang, Educative, Inc., 2023

2 "¿Cuál es la diferencia entre YAML y JSON" (enlace externo a ibm.com), Amazon Web Services, 2023

"Qué es YAML" (enlace externo a ibm.com), Redhat.com, 3 de marzo de 2023

4 "Descripción general de Docker Compose" (enlace externo a ibm.com), Docker.com, 2023 

5 “Python YAML | Guía para usar archivos YAML” (enlace externo a ibm.com), Gabriel Ramuglia, 11 de septiembre de 2023