
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
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'
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
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
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
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
El intérprete convierte los valores hexadecimales y octales en valores decimales.
hex1: 0x14d3
oct1: 014442
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
Se aplica una condición similar a «Incorrecto“Valor también.
upgrade: False
Reboot_After_Upgrade: FALSE
Enable_Firewall: off
Set_Power_Profile: no
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
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"]
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
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
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
Los diccionarios también se pueden crear usando cuadra Estilo.
application1: Install: Vscode Remove: Stacer Update: Firefox
También puede crear una lista de diccionarios anidados.
application2: Install: python: 3.9 Vscode: 1.58.2 Remove: - Stacer - pycharm Update: Firefox
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
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
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.