¿Qué es YAML?
Explorar IBM watsonx Code Assistant para Red Hat Ansible Lightspeed Reserve una demostración en directo
Compañeros de trabajo mirando el código en el monitor de la computadora

Publicado: 11 de diciembre de 2023
Colaboradores: Tasmiha Khan, Michael Goodwin

¿Qué es YAML?

YAML es un lenguaje versátil y legible por humanos para serializar datos, que se utiliza a menudo para escribir archivos de configuración.

Proporciona un formato estandarizado para representar datos estructurados de forma que sea fácil de entender para los humanos y de interpretar para las máquinas. "YAML" es un acrónimo de "YAML Ain't Markup Language" o "Yet Another Markup Language". El primero pretende subrayar que el lenguaje está pensado para datos y no para documentos.

YAML se desarrolló pensando en la simplicidad y la legibilidad. YAML utiliza una sintaxis clara y minimalista basada en sangrías, pares clave-valor y convenciones intuitivas. Este enfoque permite a desarrolladores y usuarios expresar estructuras de datos complejas en un formato que se asemeja al lenguaje natural y es fácil de entender a primera vista.

Como la legibilidad ocupa un lugar central, YAML es especialmente adecuado para diversas aplicaciones, por ejemplo, para archivos de configuración (config) e intercambio de datos entre distintos sistemas. Su estructura sencilla e intuitiva hace que YAML pueda utilizarse en muchos ámbitos y permite definir y organizar los datos de forma clara y comprensible. YAML admite caracteres Unicode y, por tanto, permite representar una gran variedad de caracteres y símbolos de distintos idiomas y conjuntos de caracteres. Una especificación YAML válida no contiene errores de sintaxis.

La gran adaptabilidad de YAML lo convierte en una herramienta versátil para una amplia gama de aplicaciones. Desde la gestión de la configuración hasta el intercambio de datos y la automatización, YAML puede utilizarse en muchos ámbitos y ofrece un medio accesible y estructurado de visualizar y gestionar datos.

Solicite una demo

Ahora es el momento de mejorar tu automatización con el poder de la IA generativa. Programa una cita de 30 minutos con uno de nuestros expertos para ver en acción IBM watsonx Code Assistant para Red Hat Ansible Lightspeed.

Contenido relacionado

Suscríbase al boletín de IBM

Sintaxis y atributos de YAML

Hay varios atributos y elementos clave dentro de la sintaxis de YAML. Es vital comprender la estructura, los tipos de datos y las convenciones utilizadas en los archivos YAML para garantizar una presentación eficaz y la legibilidad de los datos.

Mapa (diccionario)

Los diccionarios se representan como mapeos en YAML. Son una colección de pares clave-valor, donde a cada clave se le asigna un valor. Esta estructura de datos es similar al concepto de diccionarios o mapas utilizado en varios lenguajes de programación. . 

Sangría

La sintaxis YAML se basa en gran medida en la sangría y el 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. Como YAML se basa en la sangría para estructurarse, es importante que todo el documento YAML sea coherente.

Los saltos de línea en formato YAML representan saltos de línea o el final de una línea para separar distintos elementos entre sí.

Comillas

La mayoría de los escalares en YAML no requieren comillas. Sin embargo, en algunos casos, las comillas pueden ser necesarias para evitar confusiones, por ejemplo, si una cadena de texto contiene caracteres especiales que podrían confundirse con la sintaxis de YAML. O si tienes una cadena que sólo consta de "verdadero" y no debe convertirse en un valor booleano. En estos casos, se pueden utilizar comillas simples o dobles, en función de los datos y de lo que se quiera expresar.

Pares clave-valor

YAML emplea un formato sencillo de par clave-valor, separados por dos puntos, para representar vectores asociativos.  

Por ejemplo:

profesión: profesor

Secuencias (arrays)

Las secuencias (arrays o listas en otros idiomas) pueden utilizarse para definir una lista de elementos en YAML. Una secuencia se separa del elemento padre mediante sangría 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 distancia de sangría.

Por ejemplo:

fruta:
    -manzana
    -naranja
    -pera

Las secuencias también pueden representarse en un diagrama de flujo utilizando paréntesis y comas.1

fruta: [manzana, naranja, pera]

Tipos de datos

YAML admite varios tipos de datos, como cadenas, números enteros, números de coma flotante o floats, booleanos y valores nulos. Estos tipos de datos proporcionan flexibilidad para representar diferentes tipos de información.

Comentarios

YAML admite comentarios, que se identifican con el símbolo #. Los comentarios se utilizan para insertar explicaciones, notas o contexto en los archivos YAML.

Cadenas de caracteres multilínea

YAML admite cadenas de múltiples líneas, lo que permite que el texto abarque varias líneas sin necesidad de realizar 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 utilizar extensiones como .yaml o .yml. Las convenciones en la denominación y estructuración de los archivos YAML garantizan la coherencia y la correcta interpretación de los datos. Los archivos YAML también se pueden leer en Perl, Ruby y Python.

YAML, JSON y XML

YAML y JSON representan datos de forma similar, si bien YAML se caracteriza por su legibilidad, expresividad y compatibilidad con estructuras de datos complejas. YAML es un superconjunto de JSON, es decir, contiene todas las funciones de JSON más funciones y comandos expandidos.

JSON (JavaScript Object Notation) utiliza una sintaxis más explícita con llaves {}, corchetes [] y comas. La sintaxis JSON es concisa y muy utilizada, pero puede resultar confusa, especialmente con grandes cantidades de datos. El soporte de estructuras de datos en JSON es relativamente limitado e incluye principalmente matrices, objetos y valores escalares.

JSON suele preferirse para el intercambio de datos en aplicaciones web y API debido a su compatibilidad, mientras que YAML tiende a utilizarse en escenarios en los que se requiere legibilidad 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 que destaca por la sencillez y la facilidad de comprensión en la representación y el intercambio de datos. YAML y XML difieren fundamentalmente en cuanto a sintaxis y finalidad.

XML está muy estructurado y se basa en etiquetas explícitas de apertura y cierre, lo que lo vuelve un tanto confuso. En cambio, YAML utiliza una estructura más sencilla y natural similar a la del lenguaje y favorece la legibilidad mediante la sangría y los pares clave-valor sin etiquetas de cierre explícitas.

Casos prácticos de uso de YAML

YAML puede utilizarse con todos los lenguajes de programación y suele emplearse para archivos de configuración, intercambio de datos y documentación. Su formato legible por humanos aumenta la claridad de la documentación.

YAML y DevOps

YAML desempeña un papel central en DevOps y es crucial para la automatización, la orquestación y la gestión de la configuración. Como parte de las prácticas DevOps, los archivos YAML sirven como plantillas para definir secuencias de acciones y configuraciones en un formato fácil de entender. Estos archivos se utilizan para definir con precisión los pasos y procesos necesarios para la automatización y permiten una representación clara y concisa de flujos de trabajo complejos.

Infraestructura como código (IaC)

YAML se utiliza para definir la infraestructura como código, es decir, el uso de código en lugar de procesos manuales para definir y gestionar la infraestructura de TI. IaC permite una configuración más eficaz y coherente de la infraestructura de TI. YAML puede utilizarse para definir la configuración deseada de la infraestructura, como máquinas virtuales, redes y almacenamiento, y para describir las relaciones entre los componentes de la infraestructura informática.

Implementaciones

YAML se utiliza para crear archivos de implementación para aplicaciones que contienen configuraciones de aplicaciones, dependencias, límites de recursos y otra información importante para la implementación y el rendimiento eficientes de las aplicaciones. Los archivos YAML ayudan a reducir los errores de implementación y aumentan la velocidad de entrega de las aplicaciones mediante el control de versiones y la automatización.

Configuración de canalización de CI/CD

YAML puede desempeñar un papel importante en los canales de integración continua y entrega continua (CI/CD), un importante flujo de trabajo ágil de DevOps. Al igual que en la configuración e implementaciones de infraestructura, los archivos YAML se utilizan para definir los pasos y objetivos de la canalización y, en última instancia, ayudan a automatizar el proceso de CI/CD.

Herramientas YAML y DevOps

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

Ansible

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

Gracias a IBM watsonx Code Assistant for Red Hat Ansible Lightspeed, los usuarios pueden programar una tarea en inglés sencillo y recibir recomendaciones de código YAML para las tareas de automatización.n. Estas recomendaciones de código se utilizan para crear guías de estrategias 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. Kubernetes funciona basándose en "estados", es decir, intentando alcanzar un estado deseado a partir de uno actual, basándose en instrucciones específicas. Los archivos YAML pueden utilizarse para crear recursos Kubernetes como pods, objetos e implementaciones, así como para especificar y comunicar el estado deseado de los objetos Kubernetes.

GitHub

GitHub, una plataforma 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 gestión de proyectos.

Docker Compose

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

Uso compartido de datos en varios lenguajes

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

Archivos de registro

Los archivos de registro son archivos de datos textuales generados por ordenador que contienen información sobre las operaciones y patrones dentro de aplicaciones, sistemas, servidores y otros recursos o dispositivos informáticos. 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 limpios.

Ventajas de YAML

YAML se ha convertido en un lenguaje de serialización de datos muy popular por varias razones, entre ellas su sencillez, compatibilidad y utilidad para crear archivos de configuración..

Simplicidad

La sintaxis de YAML se asemeja a las estructuras del lenguaje natural. Su sencillez y su diseño minimalista lo hacen fácilmente comprensible tanto para los desarrolladores como para los usuarios no técnicos, lo que mejora la comprensión y reduce los errores.

Uso para archivos de configuración

YAML está muy indicado para los archivos de configuración debido a su formato estructurado y legible. Simplifica el proceso de definición de configuraciones gracias a la sangría y a los pares clave-valor, lo que lo hace manejable y adaptable a diversas aplicaciones de software.

Compatibilidad

La naturaleza independiente de la plataforma de YAML garantiza la compatibilidad entre distintos sistemas y lenguajes de programación, lo que facilita el intercambio de datos sin fisuras y la interoperabilidad entre diversas plataformas y entornos.

Herramientas para el procesamiento de YAML

PyYAML es una destacada biblioteca de Python utilizada para analizar y trabajar con archivos YAML en aplicaciones basadas en Python. Proporciona métodos para cargar datos YAML en objetos Python. PyYAML permite convertir archivos YAML en estructuras de datos prácticas dentro de 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 a la hora de preservar la precisión, validez e integridad de los archivos YAML. Su función principal consiste en validar la sintaxis YAML, identificar errores y garantizar la coherencia dentro de los documentos YAML. 

Soluciones relacionadas
IBM watsonx Code Assistant for Red Hat Ansible Lightspeed

IBM watsonx Code Assistant for Red Hat Lightspeed desmitifica el proceso de creación de guías de estrategias de Ansible mediante recomendaciones de contenido con 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.

Explorar Watsonx Code Assistant for Red Hat Ansible Lightspeed Reserve una demostración en directo

IBM watsonx Code Assistant

IBM watsonx Code Assistant aprovecha la IA generativa para acelerar el desarrollo manteniendo al mismo tiempo los principios de confianza, seguridad y cumplimiento 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.

Explorar IBM watsonx Code Assistant

Dé el siguiente paso

¿Listo para avanzar en su automatización, impulsada por IA generativa? Vea lo que puede hacer watsonx Code Assistant for Red Hat Ansible Lightspeed cuando programe una demostración en directo o hable con uno de nuestros expertos.

Explorar Watsonx Code Assistant for Red Hat Ansible Lightspeed Reserve una demostración en directo
Notas a pie de página

1 "How to represent arrays in YAML" (el enlace reside fuera de ibm.com)," Tarun Telang, Educativo, Inc., 2023

2 “What’s the difference between YAML and JSON” (el enlace se encuentra fuera de ibm.com), Amazon Web Services, 2023

"What is YAML" (el enlace reside fuera de ibm.com), Redhat.com, 3 de marzo de 2023

4 "Docker Compose overview" (el enlace reside fuera de ibm.com), Docker.com, 2023 

5 "Python YAML | Guide to Handing YAML Files" (el enlace se encuentra fuera de ibm.com), Gabriel Ramuglia, 11 de septiembre de 2023