Jump to section

¿Qué es YAML?

Copiar URL

YAML es un lenguaje de serialización de datos que las personas pueden comprender y 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. 

Es un lenguaje de programación popular porque está diseñado para que sea fácil de leer y entender. También se puede utilizar junto con otros lenguajes de programación. Gracias a la flexibilidad y la accesibilidad que caracterizan a YAML, Ansible® lo utiliza para crear procesos de automatización en forma de playbooks de Ansible.

YAML utiliza una extensión de archivos .yml o .yaml y sigue reglas de sintaxis específicas. 

Tiene características que provienen de Perl, C, XML, HTML y otros lenguajes de programación. También se basa en JSON, por lo que los archivos JSON son compatibles con YAML.

No hay símbolos de formato habituales, como llaves, corchetes, etiquetas de cierre o comillas, y los archivos son más sencillos para su lectura, ya que utilizan la sangría al estilo Python para determinar la estructura e indicar la incorporación de un elemento de código dentro de otro. Está diseñado para que no se admitan los caracteres de tabulación y así se mantenga la portabilidad en todos los sistemas, por lo que se usan los espacios en blanco, que son los caracteres de espacio. 

Los comentarios se pueden definir con una almohadilla o símbolo numeral (#) y su uso es una práctica recomendada, ya que describen la intención del código. YAML no es compatible con los comentarios que tienen varias líneas, por lo cual el carácter de almohadilla se debe utilizar como sufijo de cada una.

La duda más común entre los principiantes es qué significan los tres guiones (---). Se utilizan para señalar el inicio de un documento mientras que cada uno termina con tres puntos (…).  

Este es un ejemplo muy básico de un archivo YAML:

 #Comentario: esta es una lista de supermercado que utiliza YAML #Nota - el carácter representa la lista --- comida: - vegetales: tomates #primer elemento de la lista - frutas: #segundo elemento de la lista cítricos: naranjas tropicales: bananas nueces: maní dulces: pasas 

Observe que la estructura de un archivo YAML es un mapa o una lista y sigue una jerarquía según la sangría y cómo se definen los valores clave. Los mapas permiten asociar pares de clave-valor. Cada clave debe ser única y el orden no importa. Piense en un diccionario de Python o una asignación de variable 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. Una secuencia de lista comienza con un guion (-) y un espacio, mientras que la sangría la separa del elemento principal. Puede pensar en una secuencia como una lista de Python o una matriz en Bash o Perl. Las listas se pueden incorporar a los mapas.

En el ejemplo de más arriba, "vegetales" y "frutas" representan los elementos que son parte de la lista llamada "comida".

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. Para lograrlo, puede utilizar un linter, que es una aplicación 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.

Este es un ejemplo de un archivo YAML sencillo para el registro de un estudiante que demuestra las reglas de sintaxis:

#Comentario: registro de estudiante #Describe algunas características y preferencias --- nombre: Martin D'vloper #clave-valor edad: 26 pasatiempos: - pintar #primer elemento de la lista - tocar_instrumentos #segundo elemento de la lista - cocinar #tercer elemento de la lista lenguajes_de_programación: java: intermedio python: avanzado javascript: principiante comidas_preferidas: - vegetales: tomates - frutas: cítricos: naranjas tropicales: bananas nueces: maní dulce: pasas 

Si este archivo se traduce a Python con la biblioteca PyYAML, se generará la estructura de datos siguiente:

 [ { "nombre": "Martin D'vloper", "edad": 26, "pasatiempos": ["pintar", "tocar_instrumentos", "cocinar"], "lenguajes de programación": { "java": "intermedio", "python": "avanzado", "javascript": "principiante", }, "comida_favorita": [ {"vegetales": "tomates"}, { "frutas": { "cítricos": "naranjas", "tropicales": "bananas", "nueces": "maní", "dulce": "pasas", } }, ], } ]

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.

¿Cuál es la diferencia entre Ansible y Red Hat Ansible Automation Platform?

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 puede ejecutar una o más tareas, y cada tarea invoca un módulo de Ansible. Los módulos se utilizan para realizar tareas de automatización en Ansible. Los módulos de Ansible se pueden escribir en cualquier lenguaje que se convierta en JSON, como Ruby, Python o Bash.

Un playbook de Ansible está formado por 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 es una indicación de herencia lógica. Piense en cada línea como un tipo de datos 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. Para que no ocurran errores durante las etapas críticas de las operaciones, los desarrolladores también pueden utilizar el comando ansible-lint, un linter YAML para Ansible Playbooks, para identificar posibles errores.

Con la introducción de Ansible Lightspeed con IBM Watson Code Assistant, un servicio de inteligencia artificial generativa, los desarrolladores pueden crear contenido de automatización de Ansible de manera más eficiente. Los usuarios ingresan una solicitud en inglés y reciben recomendaciones de código YAML para tareas de automatización que luego se utilizan para crear playbooks de Ansible.

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. 

Al crear un objeto de Kubernetes, deberá incluir especificaciones para definir el estado deseado del objeto. La API de Kubernetes se puede usar para crear el objeto. 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.

Con una suscripción a Red Hat, obtiene contenido certificado, un ecosistema de socios sólido, acceso a servicios de gestión alojados y soporte técnico del ciclo de vida que permite que sus equipos creen, gestionen y ajusten la automatización en toda su empresa. También podrá aprovechar el conocimiento especializado que hemos obtenido de nuestras asociaciones exitosas con miles de clientes.

Red Hat OpenShift es el Kubernetes empresarial. 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.

¿Cuánto tiempo le puede ahorrar la automatización?

Responda una pocas preguntas para ver cuánto tiempo puede ahorrar en su empresa utilizando Ansible Automation Platform.

Siga leyendo

Artículo

Conceptos básicos de Ansible

Ansible se encarga de automatizar algunos procesos de la TI, como la preparación de la infraestructura y la gestión de la configuración. En esta introducción conocerá los conceptos básicos de Ansible.

Artículo

¿Qué es la gestión de los procesos empresariales?

La gestión de los procesos empresariales (BPM) consiste en modelar, analizar y optimizar los procesos integrales de esta naturaleza para lograr sus objetivos comerciales estratégicos.

Artículo

¿Por qué conviene elegir Red Hat para la automatización?

Red Hat Ansible Automation Platform incluye las herramientas que necesitan los equipos para implementar y compartir la automatización en toda la empresa.

Más información sobre la automatización

Productos

Servicio de nuestros asesores estratégicos, quienes tienen una visión amplia de su empresa, analizan sus desafíos y lo ayudan a superarlos con soluciones completas y rentables.

Plataforma que permite automatizar toda la empresa, sin importar en qué etapa del proceso de automatización se encuentre.

Contenido adicional

Ebook

La empresa automatizada: unificación de las personas y los procesos

Ebook

Automatice los flujos de trabajo de la infraestructura

PODCAST

Command Line Heroes Temporada 3, Episodio 5 Lenguajes que llegaron para quedarse

Escúchelo ahora

Recursos adicionales

Forrester Wave™: Automatización de la infraestructura, primer trimestre del 2023

Léalo aquí

Capacitación

Curso de capacitación gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Curso de capacitación gratuito

Red Hat Ansible Automation for SAP