Inicio
Topics
YAML
Publicado: 11 de diciembre de 2023
Colaboradores: Tasmiha Khan, Michael Goodwin
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.
Descubra el poder de integrar una estrategia basada en un lakehouse de datos en su arquitectura de datos, incluidas las mejoras para escalar la IA y las oportunidades de optimización de costes.
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.
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. .
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í.
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.
YAML emplea un formato sencillo de par clave-valor, separados por dos puntos, para representar vectores asociativos.
Por ejemplo:
profesión: profesor
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]
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.
YAML admite comentarios, que se identifican con el símbolo #. Los comentarios se utilizan para insertar explicaciones, notas o contexto en los archivos YAML.
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.
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 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.
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 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.
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.
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.
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.
Muchas herramientas y programas utilizados por los equipos DevOps aprovechan YAML, incluyendo:
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 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, 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 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.
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.
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.
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..
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.
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.
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.
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.
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.
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.
Regístrese para probar la vista previa técnica de IBM watsonx Code Assistant for Red Hat Ansible Lightspeed.
Aprenda de la mano de expertos, analistas de mercado e investigadores científicos cómo se puede aplicar la IA generativa a sus ITOps para lograr resultados empresariales a gran escala.
Mediante las tecnologías de automatización e IA, las organizaciones de TI pueden reducir las brechas de habilidades, o skill gaps, y permitir a los desarrolladores escribir código de calidad con mayor eficiencia.
Aprenda de sus compañeros, comparta ideas y colabore con nuestra comunidad.
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
3 "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