Jump to section

¿Qué es YAML?

Copiar URL

YAML es un lenguaje de serialización de datos que suele utilizarse en el diseño de archivos de configuración. Para algunas personas, YAML significa otro lenguaje de marcado más; para otras, es un acrónimo recursivo que quiere decir YAML no es un lenguaje de marcado, lo que enfatiza la idea de que se utiliza para los datos, no para los documentos. 

Además, es un lenguaje de programación popular debido a que las personas pueden comprenderlo fácilmente y utilizarlo con otros lenguajes. Gracias a la flexibilidad y la accesibilidad que lo caracterizan, la herramienta de automatización de Ansible lo utiliza para crear procesos de automatización en forma de playbooks de Ansible.

YAML cuenta con funciones de Perl, C, XML, HTML y otros lenguajes de programación, y se basa en JSON, lo cual genera que los archivos JSON sean compatibles con YAML.

En YAML, se usa la sangría al estilo Python para indicar la incorporación de un elemento de código dentro de otro. No se admiten los caracteres de tabulación, así que se usan los espacios en blanco, ni tampoco hay símbolos comunes de formato, como las llaves, los corchetes, las etiquetas de cierre o las comillas. Los archivos YAML usan las extensiones .yml o .yaml. 

La estructura de los archivos puede ser un mapa o una lista.

Los mapas permiten asociar pares de clave-valor. Cada clave debe ser única y el orden no importa, tal como ocurre en un diccionario de Python o la asignación de variables en un script de Bash.

Es necesario resolver los mapas para poder cerrarlos, entones se origina uno nuevo. Es posible crear mapas nuevos aumentando el nivel de sangría o resolviendo el mapa anterior y comenzando uno adyacente. 

Las listas incluyen valores en un orden específico y pueden contener cualquier cantidad de elementos según sea necesario. Las secuencias de las listas empiezan con un guion (-) y un espacio, y se utiliza la sangría para separarlas del elemento principal, de manera similar a las listas de Python o los conjuntos en Bash o en Perl. Las listas se pueden incorporar a los mapas. 

YAML también contiene valores sencillos (escalares), que son datos arbitrarios (codificados en Unicode) que se pueden utilizar como cadenas, números enteros, fechas, números o booleanos.

Al crear un archivo YAML, es necesario asegurarse de que sea válido y siga las reglas sintácticas. Un linter es una herramienta que se usa para verificar la sintaxis de los archivos. El comando yamllint sirve para asegurarse de haber creado un archivo YAML válido antes de enviarlo a una aplicación.

A continuación aparece el ejemplo de un archivo YAML simple para el registro de un empleado, donde se muestran las reglas de la sintaxis.

 --- # An employee record name: Martin D'vloper job: Developer skill: Elite employed: True foods: - Apple - Orange - Strawberry - Mango languages: perl: Elite python: Elite pascal: Lame education: | 4 GCSEs 3 A-Levels BSc in the Internet of Things 

Uno de los usos más comunes es la creación de archivos de configuración. Se recomienda utilizar YAML en lugar de JSON para escribir los archivos de configuración porque es un lenguaje más fácil de comprender, aunque ambos pueden usarse de manera indistinta en la mayoría de los casos.  

Además de Ansible, hay otros elementos que utilizan YAML, como las implementaciones y los recursos de Kubernetes. 

Una de las ventajas de utilizarlo es que se pueden agregar los archivos a un control de versiones, como Github, para rastrear y auditar los cambios. 

YAML en Ansible

Los playbooks de Ansible se utilizan para organizar los procesos de TI. Un playbook es un archivo YAML que contiene por lo menos un play, y que sirve para definir el estado deseado de un sistema. 

Cada play ejecuta una o varias tareas, y cada una de ellas activa un módulo de Ansible, el cual se usa para llevar a cabo las tareas de automatización en Ansible y se puede escribir en cualquier lenguaje que se convierta a JSON, como Ruby, Python o Bash.

Un playbook de Ansible consiste en mapas y listas. Para crear uno, comience una lista de YAML donde se nombre un play y se enumeren las tareas en una secuencia. Recuerde que la sangría no indica una relación jerárquica lógica, sino que cada línea es como un tipo de datos de YAML (una lista o un mapa).

Los usuarios de Ansible pueden aprovechar las plantillas de YAML para programar que ciertas tareas repetitivas se ejecuten de manera automática, sin tener que aprender un lenguaje de programación avanzado.

YAML para Kubernetes

El funcionamiento de Kubernetes depende del estado definido y del real. Los objetos de Kubernetes representan el estado de un clúster, y comunican a la plataforma cuál es la apariencia de la carga de trabajo que usted desea. Se pueden crear recursos de Kubernetes, como los pods, los objetivos y las implementaciones, con los archivos YAML. 

Cuando cree un objeto de Kubernetes, para lo cual puede utilizar su propia API, deberá incluir especificaciones para definir su estado deseado. La solicitud a la API incluirá las especificaciones del objeto en JSON, pero lo más común es que usted proporcione la información obligatoria a kubectl como un archivo YAML. Kubectl convertirá el archivo al lenguaje YAML por usted cuando haga la solicitud a la API.

Una vez que se crea y se define el objeto, Kubernetes se encarga de garantizar su permanencia. 

Los desarrolladores o los administradores de sistemas indican el estado definido a través de los archivos YAML o JSON que envían a la API de Kubernetes. La plataforma utiliza un controlador para analizar la diferencia entre el nuevo estado definido y el real en el clúster.

Red Hat Ansible Automation Platform utiliza YAML, un lenguaje de automatización comprensible para las personas que permite que los usuarios de una empresa compartan, evalúen y gestionen el contenido de automatización.

La plataforma incluye las herramientas que se necesitan para implementar la automatización en toda la empresa, como los playbooks y los sistemas de análisis. Ofrece un panel visual, el control de acceso basado en funciones y otras herramientas, para que los usuarios centralicen y controlen la infraestructura de TI, lo cual ayuda a reducir la complejidad operativa.

Red Hat OpenShift es la plataforma de Kubernetes para las empresas. Incluye todos los elementos adicionales de tecnología que convierten a Kubernetes en una herramienta sólida y viable para la empresa; por ejemplo: registros, conexiones en red, telemetría, seguridad, automatización y servicios.

Gracias a Red Hat OpenShift, los desarrolladores pueden crear nuevas aplicaciones en contenedores, alojarlas e implementarlas en la nube con la capacidad de ajuste, la organización y el control necesarios para convertir una idea brillante en un nuevo negocio, en poco tiempo y sin complicaciones.

Obtenga más información

Artículo

¿Qué son los playbooks de Ansible?

Un playbook de Ansible es un plano técnico de las tareas de automatización, las cuales son acciones complejas de TI cuya ejecución se lleva a cabo con muy poca intervención humana o sin ella. Se ejecutan en un conjunto, un grupo o una clasificación de hosts, los cuales conforman lo que se conoce como un inventario de Ansible.

Artículo

Los conceptos básicos de Kubernetes

Kubernetes es una plataforma open source para la organización de contenedores que automatiza muchos de los procesos manuales involucrados en la implementación, la gestión y el ajuste de las aplicaciones que se alojan en ellos.Kubernetes lo ayuda a distribuir y gestionar las aplicaciones en contenedores, heredadas y desarrolladas en la nube según sea necesario.

Artículo

¿Qué es la gestión de la configuración?

La gestión de la configuración es un proceso que busca mantener los sistemas informáticos, los servidores y el software en un estado deseado y uniforme. Permite garantizar que un sistema funcione como se espera a medida que se realizan cambios. 

Las plataformas para la implementación de la automatización y de las aplicaciones

Red Hat Ansible Automation Platform

Plataforma que permite diseñar la automatización de la TI según sea necesario. Centralice y controle su infraestructura de TI con un panel visual, el control de acceso basado en funciones y mucho más.

Red Hat OpenShift

Plataforma de contenedores de Kubernetes empresarial con operaciones automatizadas integrales para gestionar implementaciones de nube híbrida, multicloud y edge computing. 

Illustration - mail

Obtenga más contenido como este

Suscríbase a nuestro boletín informativo: Red Hat Shares.