Tutoriales

Cómo usar el anidamiento, las listas y los comentarios de YAML en los libros de jugadas de Ansible

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, retriesetc 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, methody return_content si niño uri 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.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba