Tutoriales

Tutorial de YAML | Empezando con YAML

Puede trabajar como desarrollador, administrador, ingeniero de nube o ingeniero de DevOps y, independientemente de sus funciones, se encontrará con usted. YAML y es importante que comprenda el factor qué y cómo de yaml. Este artículo ha sido seleccionado para familiarizarse con el Conceptos básicos de Yaml.

Antes de comenzar con los conceptos básicos de YAML, permítame darle una introducción rápida a la serialización de datos.

¿Qué es la serialización de datos?

En términos simples, la serialización de datos es el proceso de convertir sus datos a un formato que la aplicación puede almacenar, transmitir a través de la red e interpretar.

Los tres formatos de serialización de datos más comunes son XML, JSON y YAML. También tenemos otros formatos como BSON, MessagePack y Protobuf, etc.

Esta guía solo se centra en qué es YAML y cómo trabajar con YAML, con ejemplos prácticos.

¿Qué es YAML?

YAML significa YAML no es un lenguaje de marcado, es un lenguaje de serialización de datos que es un superconjunto de JSON. YAML es tan popular por su simplicidad. Es fácil crear y leer archivos yaml en comparación con XML o JSON.

Herramientas modernas como Ansible, Docker, Kubernetes, Chef, etc. y entornos en la nube como AWS, Azure, GCP usan yaml. Verá muchos archivos de configuración e implementación escritos con yaml. En Ansible, por ejemplo, el libro de jugadas está escrito en yaml.

Muchos lenguajes de programación comunes tienen bibliotecas para trabajar con yaml, por lo que yaml se puede integrar fácilmente en cualquier entorno.

Extensión YAML

Los archivos YAML también deben guardarse .yml o .yaml Extensiones. Todos los editores de texto populares como Vscode, Atom, Vim, Sublime Text, etc., son compatibles con el lenguaje Yaml.

También puede instalar extensiones como Yaml Linter, Yaml to Json / XML Converter, Yaml Beautify, etc. en sus editores de texto, que tienen más funcionalidad cuando trabaja con Yaml.

Estructura básica de yaml

La estructura básica de yaml es una secuencia o un tipo de diccionario. El tipo de secuencia es similar a la lista de Python y el tipo de diccionario es similar a los diccionarios de Python.

Los diccionarios son pares clave-valor donde la clave es del tipo cadena y el valor puede ser de cualquier tipo escalar. Para separar la clave y el valor, use los dos puntos (:).

Site_name: ostechnix

Cada documento de la secuencia de Yaml debe estar separado por tres guiones (---) y tres puntos (). Tres guiones (---) señala el comienzo del documento y tres puntos () apunta al final del documento en la secuencia. Si no hay más de un documento, no es necesario utilizar guiones ni puntos.

---
operating_system: Redhat
version: 8
Same_family:
 - Rocky Linux
 - Alma Linux
 - Fedora Linux
...

---
operating_system: Debian
version: 11
Same_family:
 - Ubuntu
 - Linux Mint
 - Pop!_OS
...

Yaml usa sangría para definir la estructura del objeto. Las pestañas no son compatibles y debe dejar dos espacios para la sangría. Cuando presionas en el editor de texto solo quedan dos espacios cuando se trabaja con yaml, o al menos este es el caso con Vscode.

Sangría YAML

Aprenderá más sobre la sangría en la siguiente sección.

Voy a ejecutar el siguiente código de Python que analizará el archivo YAML y convertirá el tipo de datos en un tipo de datos de Python.

#!/usr/bin/python3

import yaml

with open("input.yaml", 'r') as f:
   dict = yaml.load(f, yaml.FullLoader)
   for k, v in dict.items():
       print (k + " : " + str(v))
       print("data type", " = ", type(v))
       print()

Puede utilizar este código o un Intérprete en línea para ejecutar y probar los códigos Yaml de este artículo.

Los comentarios darán una mejor comprensión a cualquiera que lea el archivo yaml. Para agregar comentarios a su archivo yaml, use el # Símbolo. Yaml no admite comentarios de varias líneas. Entonces, si desea agregar comentarios de varias líneas, debe agregar el archivo. anteponer # Símbolo.

# CONFIGURATION FILE BASED ON PoP_!OS COSMIC DESKTOP

OS_NAME: "Pop!_OS"
VERSION: 21.04       # VERSION 21.10 REACHED EOL
CODE_NAME: COSMIC  

En el ejemplo anterior, se han agregado dos comentarios. El comentario de bloque se agrega en la primera línea y el segundo es el comentario en línea que se agrega en la línea cuatro.

Tipo de cadena YAML

Las cadenas en yaml se pueden hacer con o sin comillas. Yaml es lo suficientemente inteligente como para interpretar el tipo de datos internamente. Aquí la clave es del tipo cadena y el valor también es del tipo cadena.

El punto importante para recordar.

  • Cree cadenas sin comillas a menos que sea necesario.
  • Utilice comillas dobles cuando la cadena contenga caracteres de escape especiales.
  • Utilice comillas simples si desea que los caracteres especiales se interpreten como literales.
User1_review: Pop_!os is great to work with
User2_review: "Pop_!os t is great to work with"
User3_review: 'Pop_!os t is great to work with'
Tipo de cadena Yaml
Tipo de cadena Yaml

Como dije anteriormente, yaml conoce el tipo de datos de forma predeterminada. También hay una forma explícita de especificar el tipo de datos. Usar !! Símbolo seguido del tipo de datos y el valor de la cadena.

User1_review: !!str Pop_!os is great to work with
Definición implícita
Definición implícita

Si tiene una línea larga de cadena pero desea escribirla en su archivo yaml en varias líneas, puede hacerlo con. hacer > Símbolo. Se llama estilo doblado. Su analizador interpreta la cadena como una sola línea, aunque la haya escrito en varias líneas.

User4_review: >
 Among all the distribution
 I used
 PoP_!OS looks great
Cuerda multilínea de estilo plisado
Cuerda multilínea de estilo plisado

Si las cadenas de varias líneas deben imprimirse sin cambios, utilice el Tubería (|) Símbolo. Se llama estilo literal.

User5_review: |
 Among all the distribution
 I used
 PoP_!OS looks great
Cuerda multilínea de estilo literal
Cuerda multilínea de estilo literal

Puede usar modificadores de chomp para eliminar o mantener espacios al final de los valores. Puede utilizar el … "-" Símbolo después > o | para eliminar el espacio en blanco.

User4_review: >-
Among all the distribution
I used
PoP_!OS looks great.
User5_review: |-
Among all the distribution
I used
PoP_!OS looks great.

Si quieres Mantenga el espacio en blanco, Puedes añadir «+«Símbolo después | o > Símbolos

User4_review: >+
Among all the distribution
I used
PoP_!OS looks great.
User5_review: |+
Among all the distribution
I used
PoP_!OS looks great.

Tipo numérico YAML

Yaml admite los tipos numéricos integer, float, decimal o hexadecimal. De forma predeterminada, el analizador yaml reconoce el tipo de datos, pero también hay una forma explícita de definir los tipos de datos int y float, como se muestra en el siguiente ejemplo.

int1: 98765
int2: !!int 56789 # Explicit Integer definition

float1: 20.0481
float2: !!float 20.0482 # Explicit Float definition
Tipo de datos Int y Float
Tipo de datos Int y Float

El intérprete convierte los valores hexadecimales y octales en valores decimales.

hex1: 0x14d3
oct1: 014442
Valores hexadecimales y octales
Valores hexadecimales y octales

YAML tipo booleano

Yaml admite valores booleanos de «Cierto» y «Incorrecto«. Tú también puedes «sí señor» o «A«lo cual indica»Cierto«, y «no» o «el fin«lo cual indica»incorrecto«. También puede utilizar el tipo de datos de forma explícita !! bool.

No hay distinción entre mayúsculas y minúsculas para los valores booleanos. En el siguiente ejemplo, puede ver que escribí «Cierto«en muchos casos, y el analizador interpreta todo como»Cierto» Valor.

upgrade: True
Reboot_After_Upgrade: TRUE
Enable_Firewall: on
Set_Power_Profile: yes
YAML valor booleano verdadero
YAML valor booleano verdadero

Se aplica una condición similar a «Incorrecto“Valor también.

upgrade: False
Reboot_After_Upgrade: FALSE
Enable_Firewall: off
Set_Power_Profile: no
YAML Valor booleano incorrecto
YAML Valor booleano incorrecto

Aviso: Si intenta poner entre comillas el valor booleano, se tratará como una cadena.

YAML tipo nulo

Para hacer el valor cero, puede usar el «~«Símbolo o»null«Palabra clave. También puede definir la clave y dejar el valor en blanco, que se trata como nulo. También puede hacer definiciones explícitas con !!null.

Similar al booleano, no hay límite de distinción entre mayúsculas y minúsculas para «null«Palabra clave. Puede ver en el siguiente ejemplo que la palabra clave nulo se escribe en tres casos diferentes.

upgrade: !!null null
Reboot_After_Upgrade: NULL
Enable_Firewall: Null
Set_Power_Profile: ~
Set_Network_Interface: # NO VALUES PASSED
YAML tipo nulo
YAML tipo nulo

En Python, el valor NULL se interpreta como un tipo «Ninguno», y si intenta convertir yaml a json, el valor NULL se interpreta solo como un valor nulo.

Tipo de secuencia YAML

La secuencia de Yaml es una lista de valores que se almacenan en orden. Piense en secuencias como listas de Python o matrices en Perl, en las que define una variable y almacena uno o más valores.

Hay varias formas de definir la secuencia en yaml. El primero es el estilo de entrada, donde ingresa un nombre de clave seguido de una lista de valores entre corchetes. Esto es similar a eso Lista de Python.

# INFLOW STYLE SEQUENCE
app_to_be_updated: [ "firefox", "timeshift"]
Secuencia de estilo de entrada
Secuencia de estilo de entrada

La segunda opción es crear una secuencia de estilo de bloque. A cada elemento de la secuencia se le asigna una a. prefijado guión seguido de un lugar y Valor del elemento. Cada elemento debe escribirse en una línea separada. Puede sangrar dos espacios o crear una secuencia sin sangría. Pero como práctica recomendada, limítese a la sangría.

# BLOCK STYLE SEQUENCE

app_to_be_installed:
 - vscode
 - virtualbox
 - tilix

app_to_be_removed:
- pycharm
- stacer
- ufw
Secuencia de estilo de bloque
Secuencia de estilo de bloque

También es posible crear una secuencia anidada como se muestra a continuación.

# NESTED SEQUENCE
applications:
 - Productivity:
   - vscode
   - vagrant
   - docker
   - python3
 - Browser:
   - firefox
   - chrome
   - brave
Secuencia anidada
Secuencia anidada

Tipo de diccionario YAML

Ya hemos visto los tipos de diccionario en las primeras secciones de este artículo. El diccionario es un par clave-valor que es uno de los componentes básicos de yaml. El diccionario «llave«son siempre del tipo cadena y los valores pueden ser de cualquier tipo escalar.

Similar a la secuencia, el diccionario también se puede escribir de varias formas. Primero es que afluencia Estilo y esto es similar a la representación de Diccionarios de Python.

application:  Install: "Vscode", Remove: Stacer, Update: Firefox
Diccionario - Estilo de entrada
Diccionario – Estilo de entrada

Los diccionarios también se pueden crear usando cuadra Estilo.

application1:
 Install: Vscode
 Remove: Stacer
 Update: Firefox
Diccionario - estilo de bloque
Diccionario – estilo de bloque

También puede crear una lista de diccionarios anidados.

application2:
 Install:
   python: 3.9
   Vscode: 1.58.2
 Remove:
   - Stacer
   - pycharm
 Update: Firefox
Diccionario anidado
Diccionario anidado

Anclajes y alias YAML

Puede implementar DRY (Don’t Repeat Yourself) en su archivo yaml usando anclajes y alias.

El ancla está marcada con «&«El símbolo y el alias se indican mediante»*«-Símbolo.

Anchor es similar a una variable en programación. Ayudas a definir un ancla & Símbolo seguido de una palabra clave y luego usar un alias (* Palabra clave) para expandir el valor de anclaje.

Eche un vistazo al siguiente ejemplo. &x se define como un ancla y luego se expande con un alias *x.

User4_review: &x Among all the distribution I used PoP_!OS looks great.
User5_review: *x
User6_review: *x
Ancla y alias
Ancla y alias

Puede anular ciertos valores al usar anclajes y alias mediante el uso de << Símbolo. Aquí sobrescribo el valor de la versión del 21/10 al 21/04.

PoP_OS: &pos
 version: 21.10
 code_name: cosmic desktop
 d_flavour: gnome

rewrite:
 <<: *pos
 version: 21.04
Sobrescribir valores
Sobrescribir valores

diploma

En este artículo vimos qué es yaml y cómo trabajar con diferentes tipos en yaml. En esta guía, he usado Python como analizador de Yaml.

Espero que hayas encontrado útil este tutorial de YAML. Si es nuevo en Yaml, le sugiero que practique todo lo que mostramos en este artículo para familiarizarse con Yaml y usarlo de acuerdo con su entorno.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba