
Para automatizar con Ansible, debe estar familiarizado con YAML, un lenguaje legible por humanos que se usa para definir la lógica en los libros de jugadas de Ansible. YAML significa «Yet Another Markup Language» o «YAML Ain’t Markup Language» (acrónimo recursivo). YAML se usa a menudo para escribir archivos de configuración. Aunque YAML se considera simple y fácil de entender, la sintaxis de YAML puede resultar confusa. Este artículo se sumerge en algunos conceptos básicos de YAML.
Más información sobre la anidación
YAML se introdujo por primera vez a principios de la década de 2000. Uso de archivos YAML .yml
o .yaml
extensión, los archivos YAML generalmente comienzan con ---
y ...
, aunque esto es opcional. Puede usar cualquier editor de código fuente (como Vim o Emacs) o cualquier otro entorno de desarrollo integrado (IDE) para escribir archivos YAML. Los datos se representan en YAML mediante un par clave-valor simple.
YAML usa sangría al estilo de Python para expresar el anidamiento. No hay requisitos estrictos sobre cuánto espacio usar para la sangría en YAML, pero hay dos reglas básicas:
- Los elementos de datos del mismo nivel en la jerarquía deben tener la misma sangría. En el siguiente ejemplo,
register
,until
,retries
etc deben tener la misma sangría ya que ambos son parte de la misma tarea. - Un elemento que es hijo de otro elemento debe tener más sangría que su padre. En el ejemplo,
url
,method
yreturn_content
si niñouri
padre, así que sangra más.
---
- name: Check URL
hosts: all
gather_facts: True
tasks:
- uri:
url: "{{ urlpath }}"
method: GET
return_content: yes
register: result
until: result.status == 200
retries: 30
delay: 20
delegate_to: localhost
- debug:
msg: "{{ result.status }} - {{ result.msg }}"
...
Además de expresar pares clave-valor como bloques sangrados, también puede escribirlos en formato de bloque en línea entre llaves.
name: newrole
service: httpd
state: started
port: 80
La fórmula anterior también se puede escribir como:
{name: newrole, service: httpd, state: started, port: 80}
[ Get started with IT automation with the Ansible Automation Platform beginner’s guide. ]
lista de uso
Los playbooks de Ansible usan listas YAML para representar listas de elementos. Puede expresarlos de dos maneras, como se muestra a continuación.
Cada elemento de la lista se representa en YAML como una nueva línea con la misma sangría, comenzando con -
seguido de un espacio.
hosts:
- servera
- serverb
- serverc
Lo anterior también se puede escribir como elementos separados por comas:
hosts: [servera, serverb, serverc]
Usar cadenas YAML
Los comentarios YAML mejoran la legibilidad de los playbooks de Ansible. Usar hash (#
) símbolo. Las cadenas YAML se pueden expresar con comillas simples o dobles. Para cadenas de varias líneas, puede utilizar la barra vertical (|
) carácter de barra vertical o mayor que (>
) caracteristicas. La diferencia entre los dos es que el carácter vertical conserva la nueva línea, mientras que el carácter mayor que contrae la nueva línea y la convierte en un espacio.
P.ej:
---
- name: Send mail
tasks:
- name: Example mail
community.general.mail:
host: smtp.gmail.com #Mention the SMTP hostname here
port: 587 #Mention the SMTP port here
to: [email protected]
subject: 'Ansible: System generated mail'
body: |
This is a system generated mail
from the {{ ansible_facts['hostname'] }} server.
delegate_to: localhost
...
envolver
Este artículo proporciona una breve introducción y descripción general del anidamiento, las listas y las cadenas de YAML con varios ejemplos. Espero que este artículo consolide la reputación de YAML como un lenguaje simple, fácil de entender y legible por humanos. Para obtener una descripción general técnica de la estructura YAML, lea YAML para principiantes.