¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Ansible: Conceptos avanzados
Sección perteneciente al curso Ansible Automatización IT
¿Qué es YAML y por qué es importante conocerlo?
YAML es un formato de serialización de datos , legible por humanos, que está inspirado en lenguajes como XML.
YAML es un superconjunto del formato JSON, que permite añadir estructuras más complejas e incluso comentarios.
En el mundo Ansible, todos los playbooks están escritos en YAML.
Reglas generales:
- Extensión
.yaml(recomendada) o.yml - Las tabulaciones no están permitidas, solo los espacios.
- Es necesario identar (sangrar) el código uno o más espacios.
- Todas las claves/propiedades son case-sensitive (se distingue mayúsculas de minúsculas).
- Los comentarios empiezan con un símbolo
#.
Ejemplo de un playbook en YAML:
hosts: webservers sudo: yes vars: app_name: PleaseDeployMe repo_url: https://github.com/username/reponame.git repo_remote: origin repo_version: master webapps_dir: /deployed virtualenv_root: /deployed/PleaseDeployMe/mac tasks: - name: git pull project git: repo={{repo_url}} dest={{webapps_dir}}/{{app_name}} version=master
Tipos de datos
Cadenas de texto
--- foo: Esta es una cadena de texto
Los tres guiones indican el inicio del fichero.
Para meter caracteres especiales, hay que meterlos entre comillas:
--- foo: Esta es una cadena de texto "\n" estoy en una línea nueva.
Booleanos
True es lo mismo que On; False es lo mismo que Off.
--- foo: True bar: False light: On TV: Off
Números
Soporta números decimales, hexadecimales…
--- foo: 12345 bar: 0x12d4 plop: 023332
Array / listas
--- items: [1, 2, 3, 4, 5] names: ["one", "two", "three", "four", "five"]
También se podría escribir en el siguiente formato:
items: - 1 - 2 - 3 - 4 - 5
Diccionarios
--- foo: {thing1: huey, thing2: louie, thing3: dewey}
Los diccionarios se pueden anidar con otros elementos:
--- foo: bar: - bar - rgb - plob
El diccionario bar tiene dentro una lista de 3 elementos.
Variables
Permiten almacenar y reusar información. Las variables se procesan en orden, de mayor a menor preferencia:
- Variables por línea de comandos
- Variables en tareas
- Variables en roles y secciones
include - Variables creadas con la directiva
register - Variables en los inventarios
- Variables en las plays
- Host facts
- Variables por defecto en los roles
En la documentación oficial de Ansible se habla hasta de 15 niveles de prioridad.
Reglas a la hora de definir variables en Ansible:
- Deben comenzar con letra
- Pueden contener letras, números y guiones bajos.
