Yaml es un formato de serealización de datos inspirado básicamente en los lenguajes Python y XML que desde hace 13 años ya se transformó en un estándar, su nombre Yaml es un acrónimo recursivo que significa “YAML Ain't Another Markup Language” en español “YAML no es otro lenguaje de marcado”.
Es muy simple identificar un formato de tipo Yaml, su estructura es simplemente prolija basada en la identación y herencia.
Características
Yaml fue creado con la premisa de que todos los datos pueden ser representados en forma de listas, como les comentaba líneas atrás, su sintaxis es sumamente sencilla y fue diseñada para que los usuarios tengan la capacidad de crear y entender este formato.
- Los contenidos en YAML se describen utilizando el conjunto de caracteres imprimibles de Unicode, bien en UTF-8 o UTF-16.
- La estructura del documento se denota indentando con espacios en blanco; sin embargo no se permite el uso de caracteres de tabulación para indentar.
- Los miembros de las listas se denotan encabezados por un guion ( - ) con un miembro por cada línea, o bien entre corchetes ( [ ] ) y separados por coma espacio ( , ).
- Los arrays asociativos se representan usando los dos puntos seguidos por un espacio. en la forma "clave: valor", bien uno por línea o entre llaves ( { } ) y separados por coma seguida de espacio ( , ).
- Un valor de un array asociativo viene precedida por un signo de interrogación ( ? ), lo que permite que se construyan claves complejas sin ambigüedad.
- Los valores sencillos (o escalares) por lo general aparecen sin entrecomillar, pero pueden incluirse entre comillas dobles ( " ), o comillas simples ( ' ).
- En las comillas dobles, los caracteres especiales se pueden representar con secuencias de escape similares a las del lenguaje de programación C, que comienzan con una barra invertida ( \ ).
- Se pueden incluir mútliples documentos dentro de un único flujo, separándolos por tres guiones ( --- ); los tres puntos ( ... ) indican el fin de un documento dentro de un flujo.
- Los nodos repetidos se pueden denotar con un ampersand ( & ) y ser referidos posteriormente usando el asterisco ( * )
- Los comentarios vienen encabezados por la almohadilla ( # ) y continúan hasta el final de la línea.
- Los nodos pueden etiquetarse con un tipo o etiqueta utilizando el signo de exclamación( ! ) seguido de una cadena que puede ser expandida en una URL.
Lo interesante de todo, es que al ser un estándar es posible encontrar librerías que nos ayuda a interpretar este tipo de formato en los lenguajes de programación más utilizados, como C, Ruby, Python, Java, Perl, C#, PHP, JavaScript, etc.
La primera vez que me tocó editar un archivo con formato Yaml fue en la primera versión de Symfony y desde ese momento no dejé de utilizarlo para mis proyectos que programé en Python como WPHardening y MTFF (MikroTik Firewall Framework) como los archivos de configuración.
Ejemplo
Archivo de configuración mtff.yaml
configuration:
product: RB450G
version: 0.1
author: Daniel Maldonado
comment: Comment for Firewall
interfaces:
ether1:
ip:
name: ether1-wan
address: 192.168.0.1
netmask: 255.255.255.0
network: 192.168.0.0
comment: Interface de la WAN
services:
accept: [DNS, HTTP, PROXY]
deny: [SSH]
policy: drop
ether2:
ip:
name: ether2-lan
address: 10.0.0.1
netmask: 255.255.255.0
network: 10.0.0.0
comment: Interface de la LAN
services:
accept: [DNS, HTTP, PROXY, SSH]
deny: [FTP]
policy: drop
router:
ether2-to-ether1:
inface: ether2
outface: ether1
options: masquerade
services:
accept: [DNS, HTTP, PROXY]
deny: [FTP, SSH]
services:
DNS : { tcp: 53, udp: 53 }
HTTP: { tcp: 80 }
PROXY: { tcp: 8080 }
FTP: { tcp: 21 }
SSH: { tcp: 22 }
WINBOX: { tcp: 8291 }
TELNET: { tcp: 23 }
Basta con conocer mínimamente sus reglas de construcción para poder interpretar y manipular estos archivos de forma simple.
A poner en práctica lo aprendido y espero sus comentarios y sugerencias.
Saludos!
Enlace | yaml.org
No hay comentarios.:
Publicar un comentario