Conceptos básicos de YAML que todo ingeniero de DevOps debe saber

YAML ha ganado mucha popularidad en los últimos años, ya que se convirtió en parte de herramientas, tecnologías y procesos cruciales de DevOps como Ansible,Gobernadorescanalizaciones de CI/CD, etc.

Ya hemos cubierto muchos tutoriales sobre Ansible y Kubernetes. Pensé en cubrir los aspectos esenciales de YAML para que tenga en cuenta un trabajo más fluido con la configuración de sus herramientas DevOps.

¿Qué es YAML?

YAMLsignifica “YAML Ain’t Markup Language” originalmente era un acrónimo de ‘Yet Another Markup Language’. YAML es un lenguaje de “serialización de datos” y básicamente un formato de datos estructurados legibles por humanos.

Está diseñado para ser fácil de leer y escribir. La función de serialización de objetos de YAML se presenta como una alternativa práctica aJSON. YAML es un superconjunto de JSON con el uso de alcance basado en sangría para denotar la estructura como Python.

Aquí hay una muestra de YAML example:

--- 
 Student-ID: 314159
 First-Name: Linus
 Last-Name: Torvalds

Phone-numbers:
    - 281.555.7777
    - 832.676.8888
    - 937.996.9999

Addresses:
    - Street: 123 Main St.
    - City: Houston
    - State: Tx
---

Reglas básicas de YAML que siempre debes recordar

Si no desea ver errores repetidos mientras analiza su archivo YAML, siempre debe tener en cuenta lo siguiente mientras trabaja en YAML:

  • Las pestañas NO están permitidas en YAML. Debe usar espacio para la sangría.
  • Aunque la cantidad de espacio no importa siempre que la sangría del nodo secundario sea mayor que la del padre, es una buena práctica mantener la misma cantidad de espacios.
  • Debe haber espacio entre los diferentes elementos de YAML (se explica más adelante).
  • YAML distingue entre mayúsculas y minúsculas.
  • El archivo YAML debe terminar con extensiones como.yamloh.yml.
  • YAML permite la codificación UTF-8, UTF-16 y UTF-32.

Entendamos ahora la sintaxis de YAML.

Elementos de un archivo YAML: sintaxis básica

Un archivo YAML se utiliza para describir datos. En un archivo YAML, el contenido se trata de uncolección de pares clave-valordonde el valor puede ser cualquier cosa, desde una cadena hasta un árbol.

Entendámoslo por un example. Este es un archivo de manifiesto de servicio de Kubernetes.

kind: Service
metadata:  
  name: web-app-svc
spec:  
  type: NodePort  
  ports:  
  - port: 8080         #service port    
    targetPort: 8080   #Pod Port    
    nodePort: 30012  #Node Port from the range - 30000-32767  
  selector:    
    app: web-app

Se explica por sí mismo que se trata de un conjunto de elementos de pares de valores clave:Name: Value.

Como puede ver en el archivo anterior, un archivo YAML se construye a partir de varios elementos diferentes. Juntos, se pueden utilizar para describir una amplia variedad de estructuras.

1. Espacios o sangrado

En YAML, se sangra con espacios en blanco, no con tabulaciones. Y DEBE haber un espacio entre los elementos.

Especificación correcta:

Kind: Service

Especificación incorrecta:

Kind:Service

¡Porque no hay espacio después de los dos puntos en la declaración anterior!

2. Comentarios en YAML

Los comentarios se pueden definir colocando un hash delante de un elemento ‘#‘. Los comentarios se pueden hacer al comienzo de una línea o en cualquier lugar de la línea.

Si revisa nuestro archivo de configuración YAML, tenemos tres comentarios en línea como “#puerto de servicio”, etc.

3. Escalar (clave-valor)

Los escalares son las cadenas y los números que componen los datos de la página. En términos simples, son los pares de valores clave.

kind: Service
metadata:  
  name: web-app-svc

4. Colecciones y listas

Los elementos o miembros de lista y colección son las líneas que comienzan en el mismo nivel de sangría, comenzando con un guión seguido de un espacio.

- web-app-prod 
- prod-deployments 
- prom-monitored

Es una lista básica con cada elemento de la lista colocado en su propia línea con un guión de apertura.

5. Colecciones anidadas

Si desea crear una secuencia anidada con elementos y subelementos, puede hacerlo colocando un solo espacio antes de cada guión en los subelementos.

- 
 - web-app-prod 
 - prod-deployments 
 - prom-monitored
-  
 - web-app-test 
 - staging-deployments 
 - not-monitored

6. Diccionarios

Los diccionarios comprenden unkey: valueformato con contenido sangrado.

ports:    
- port: 8080         #service port    
  targetPort: 8080   #Pod Port    
  nodePort: 30012  #Node Port from the range - 30000-32767

Puede fusionar y mezclar colecciones de listas y diccionarios como este:

ports:    
- port: 8080         #service port    
  targetPort: 8080   #Pod Port    
  nodePort:       
  - 30012       
  - 30013       
  - 30014

Estos son conceptos muy básicos de YAML pero esenciales para un ingeniero DevOps.

No necesitas un editor especial para YAML. Su editor de texto favorito ya debería ser compatible con YAML o usar un complemento si es necesario.

Hay muchas cosas que puedes profundizar y aprender. Para eso, siempre puede consultarDocumentación oficial de YAML.

¿Quiere ser un mejor administrador de sistemas o DevOps? Conviértase en un miembro del Manual de Linux hoy.

Actualizaciones del boletín

Ingrese su dirección de correo electrónico a continuación para suscribirse a nuestro boletín