Entendiendo yaml

Entendiendo yaml
Yaml no es un lenguaje de marcado o yaml para abreviar el lenguaje de serialización de datos comúnmente utilizado en archivos de configuración como Kubernetes, Docker, Ansible y muchos más. Su popularidad ha crecido a lo largo de los años, por lo que es una especie de competidor para JSON.

Ok, si Yaml no es un lenguaje de marcado, ¿qué es??

Como se mencionó, YAML es un lenguaje serializado de datos desarrollado para mejorar la legibilidad humana mediante la sangría y las estructuras de datos nativos. Piense en ello como un superconjunto estricto de JSON o un cruce entre JSON y XML. Este híbrido le permite hacer lo que JSON puede y más características adicionales.

El propósito de este tutorial es presentarle a Yaml, brindarle una guía sobre la sintaxis del idioma, proporcionarle herramientas rápidas para trabajar con YAML y enseñarle cómo usarlo para archivos de configuración y más.

Cómo escribir yaml

Escribir yaml es increíblemente intuitivo (supongo que ese es el punto), ya que utiliza la sintaxis del par de valores clave. Por lo tanto, es como un diccionario en Python. Sin embargo, a diferencia de Python, YAML no permite el espacio de pestaña; usa espacios.

La sintaxis general es:

valor clave

Para comenzar un nuevo documento YAML, comenzamos con tres guiones que indican el comienzo de un nuevo archivo.

Esta característica le permite tener múltiples documentos separados por los guiones en un solo archivo.

Crear un archivo con un .Extensión Yaml y agregue los siguientes contenidos.

---

Idioma: Python

Autor: Guido Van Rossum

País: Países Bajos
---

Idioma: JavaScript

Autor: Brendan Eich

País: Estados Unidos
---

Idioma: Ruby

Autor: Yukihiro Matsumoto

País: Japón

Como puede ver en el archivo anterior, cada documento en YAML comienza con tres puntos, seguido de los datos almacenados en pares de valor clave.

Instale un enlace Yaml

Antes de continuar más, confirmemos que lo que tenemos es un archivo YAML válido. Para hacer esto, necesitamos instalar un enlace Yaml.

Un linter es una herramienta que verifica y notifica al desarrollador de errores de programación, como errores de sintaxis y construcciones no válidas. Por ejemplo, le permite verificar la sintaxis válida de un archivo.

En nuestro ejemplo, usaremos Yamllint.

Para instalar, use apt como:

actualización de sudo apt-get
sudo apt -get install yamllint -y

Una vez instalado, podemos ejecutar el enlace contra el archivo usando el comando

echo -e 'Esta es una sintaxis válida: Yaml' | muestra de Yamllint.yaml

Si el archivo contiene una sintaxis yaml válida, no nos da ninguna salida.

Ahora, intente agregar espacios dentro del archivo YAML o agregue un solo tablero en la parte inferior como:

---

Idioma: Python

Autor: Guido Van Rossum

País: Países Bajos
---

Idioma: JavaScript

Autor: Brendan Eich

País: Estados Unidos
---

Idioma: Ruby

Autor: Yukihiro Matsumoto

País: Japón
-

Si ejecutamos el enlace con este archivo, se muestran los errores, como se muestra a continuación:

muestra.yaml
Error de 15: 1 Error de sintaxis: esperado, pero encontrado '-' (sintaxis)

NOTA: Al igual que los diccionarios en Python y estructuras de datos similares en varios lenguajes de programación, los pares de valor clave en un documento YAML deben ser únicos.

Tipos de datos YAML

Yaml admite varias formas de representar datos. Incluyen:

#: Tipos escalar

Estos son el tipo de datos más común en Yaml. Están en forma de pares de valor clave, como se muestra en el ejemplo anterior.

Los valores en un par pueden ser cualquier tipo como cadena, números que incluyen hexadecimal, enteros y tal.

#: Cuerdas

Yaml también admite cadenas encerradas en cotizaciones simples o dobles. Este no es un requisito ya que el analizador Yaml lo resolverá, pero puede ser útil, especialmente en cuerdas con personajes de escape.

Los siguientes son ejemplos de cadenas válidas en YAML.

---

Cadena: esta es una cadena

String2: "Esta es también una cadena"

Cadena: 'Así es este'

NOTA: Asegúrese de cerrar las citas dobles o individuales donde se usa. Lo siguiente dará como resultado un error.

---
inválido: 'Esto es incorrecto

Para agregar un párrafo en un archivo YAML, use el signo (mayor que). Recuerda agregar un espacio antes de la línea. Por ejemplo:

---
para:>

Creando un párrafo
que abarca por más de uno
línea.

#: Tipos numéricos

El otro tipo de datos compatible en YAML son los tipos numéricos. Los tipos numéricos incluyen enteros, decimales, hexadecimales, octal y otros tipos numéricos.

La siguiente sintaxis Yaml representa tipos numéricos.

---

INT: 100

Hex: 0x7f000001

Octal: 0177

flotante: 127.0

Expo: 6.022E+23

#: Listas

Las listas en YAML se especifican utilizando un solo tablero como:

---
- lista
- otro
- y otro

#: Secuencias

Las secuencias son tipos de datos utilizados para contener múltiples valores en una sola clave. Por ejemplo:

---

servidor:

- apache
- 2.07
- Lámpara

#: Asignaciones

El mapeo es bastante similar a una secuencia, pero se compone de pares de valor clave, todos contenidos bajo un subgrupo.

Aquí hay un ejemplo:

---

Servidores:

- apache:

Nombre: Server1

OS: Debian 10

versión 2.4.46

- IIS:

Nombre: IIS-V01

OS: Windows Datacenter 2019

Versión: 10.0.17763

#: Nulo

Establecimos un nulo en YAML usando un Tilde (~) o la cadena nula como se muestra en el siguiente ejemplo:

---
Tilde: ~
var: nulo

#: Matrices

Las matrices en YAML se especifican utilizando los soportes cuadrados en una sola línea. El siguiente ejemplo muestra la definición de matrices en YAML.

---
Números: [1,2,3,4,5,6,7,8,9,10]
Strings: ["Hola", "Mundo", "de", "Linuxhint"]

Comentarios de Yaml

Yaml también admite comentarios que le permiten agregar información adicional a los datos de YAML. El analizador ignora los comentarios.

Los comentarios de Yaml comienzan con un Octothorpe (#).
---
# Este es un comentario en Yaml

Proceso Yaml a JSON

En algunos casos, es posible que necesitemos convertir Yaml a JSON. Dado que los dos están estrechamente relacionados, tiene sentido necesitar uno del otro.

Para tales escenarios, podemos usar una herramienta como YQ, que es un analizador YAML/XML para JQ.

Para instalarlo, use PIP con el comando como se muestra:

PIP3 instalar yq

NOTA: Asegúrese de tener JQ instalado, ya que es una dependencia requerida para YQ.

Supongamos que tenemos una muestra de un archivo de creación de Pod Kubernetes (Kubernetes.Yaml) con el contenido como se muestra:

---
APiversión: V1
tipo: pod
metadatos:
Nombre: Store-Site
etiquetas:
Aplicación: Web
Especificaciones:
contenedores:
- Nombre: Nginx
Imagen: Nginx
Puertos:
- Containerport: 8080
Volumememounts:
- Nombre: Maestro
MountPath:/var/www/html/nginx
dnspolicy: predeterminado
Volúmenes:
- Nombre: home_directory
vacíaDir:

NOTA: El archivo anterior es para fines de ilustración y puede contener errores si se usa en una instancia real de Kubernetes.

Para convertir el archivo YAML en JSON, use el comando:

sudo yq eval -j kubernetes.yaml

Al ejecutar el comando anterior, el contenido del archivo se convierte automáticamente en JSON, como se muestra a continuación:


"Apiversión": "V1",
"Kind": "Pod",
"Metadatos":
"Nombre": "Store-Site",
"etiquetas":
"Aplicación": "Web"

,
"Especificaciones":
"Contenedores": [

"Nombre": "Nginx",
"Imagen": "Nginx",
"Puertos": [

"Containerport": 8080

],
"Volumemounts": [

"Nombre": "Maestro",
"MountPath": "/var/www/html/nginx"

]

],
"dnspolicy": "predeterminado",
"Volúmenes": [

"Nombre": "home_directory",
"vacíaDir":

]

Eso hace que funcione más fácilmente al cambiar de JSON a YAML y viceversa.

Conclusión

Yaml es una herramienta increíblemente poderosa que le permite crear archivos de configuración altamente legibles y compatibles para servicios de soporte. Utilizando los conceptos en este tutorial, está en condiciones de crear documentos YAML complejos para sus aplicaciones o aplicaciones que admiten YAML.

Gracias y feliz codificación!