Resumen
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, la sigla 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 muy utilizado 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 su flexibilidad y accesibilidad, Ansible® lo utiliza para crear procesos de automatización en forma de playbooks de Ansible.
Sintaxis de YAML
Los archivos YAML utilizan la extensión .yml o .yaml y siguen reglas de sintaxis específicas.
YAML 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. Además, los archivos de este lenguaje son más sencillos de leer, ya que utilizan sangría al estilo Python para determinar la estructura e indicar la incrustació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 identifican 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 el final se señala con tres puntos (…).
Este es un ejemplo muy básico de un archivo YAML:
#Comment: This is a supermarket list using YAML #Note that - character represents the list --- food: - vegetables: tomatoes #first list item - fruits: #second list item citrics: oranges tropical: bananas nuts: peanuts sweets: raisins
Observe que la estructura de un archivo YAML es un mapa o una lista y sigue una jerarquía en función de la sangría y los valores clave que defina. 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 con 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 lista comienzan con un guion (-) y un espacio, y la sangría las 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 valores, por ejemplo, cadenas, números enteros, fechas, números u operadores 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. Para asegurarse de la validez del archivo antes de enviarlo a una aplicación, puede utilizar el comando yamllint.
Ejemplo de sintaxis de YAML
Este es un ejemplo de un archivo YAML sencillo para el registro de un estudiante en el que se demuestran las reglas de sintaxis:
#Comment: Student record #Describes some characteristics and preferences --- name: Martin D'vloper #key-value age: 26 hobbies: - painting #first list item - playing_music #second list item - cooking #third list item programming_languages: java: Intermediate python: Advanced javascript: Beginner favorite_food: - vegetables: tomatoes - fruits: citrics: oranges tropical: bananas nuts: peanuts sweets: raisins
Si este archivo se traduce a Python con la biblioteca PyYAML, se generará la estructura de datos siguiente:
[ { "name": "Martin D'vloper", "age": 26, "hobbies": ["painting", "playing_music", "cooking"], "programming_languages": { "java": "Intermediate", "python": "Advanced", "javascript": "Beginner", }, "favorite_food": [ {"vegetables": "tomatoes"}, { "fruits": { "citrics": "oranges", "tropical": "bananas", "nuts": "peanuts", "sweets": "raisins", } }, ], } ]
¿Cómo se utiliza YAML?
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 hacer un seguimiento de los cambios y auditarlos.
¿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 una 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 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 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 importantes de las operaciones, los desarrolladores también pueden utilizar el comando ansible-lint, un linter YAML para los playbooks de Ansible, e identificar posibles errores.
Con el surgimiento de Ansible Lightspeed with IBM watsonx 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 limpio y que cumple con las normas para tareas de automatización que luego se utilizan en la creación de 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 cómo es la carga de trabajo que desea. Con los archivos YAML se pueden crear recursos de Kubernetes, como los pods, los objetivos y las implementaciones.
Al crear un objeto de Kubernetes, deberá incluir especificaciones para definir su estado deseado. Puede usar la API de Kubernetes 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 necesaria a kubectl en forma de 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.
Ventajas de elegir Red Hat para automatizar usando YAML
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 partners 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 adquirido gracias a nuestras colaboraciones exitosas con miles de clientes.
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.
¿Cuánto tiempo puede ahorrar con la automatización?
Responda un par de preguntas para ver cuánto tiempo puede ahorrar en su empresa si utiliza Ansible Automation Platform.