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, Kubernetes, canalizaciones de CI/CD, etc.
Ya hemos cubierto muchos tutoriales sobre Ansible y Kubernetes. Pensé en cubrir los aspectos esenciales de YAML, por lo que debe tener en cuenta para un trabajo más fluido con la configuración de sus herramientas DevOps.
¿Qué es YAML?
YAML significa "YAML no es lenguaje de marcas" 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 viable a JSON. YAML es un superconjunto de JSON con el uso de alcance basado en sangría para denotar la estructura como Python.
Aquí hay un ejemplo de YAML:
---
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
.yaml
o.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 una colección de pares clave-valor donde el valor puede ser cualquier cosa, desde una cadena hasta un árbol.
Entendámoslo con un ejemplo. 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 es 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 usar para describir una amplia variedad de estructuras.
1. Espacios o sangría
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 una key: value
formato 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 consultar la documentación oficial de YAML.
¿Quiere ser un mejor administrador de sistemas o DevOps? Conviértase en un miembro del Manual de Linux hoy.