Sintaxsis basica de Ansible

Los playbooks de Ansible están codificados en YAML , para poder comprender mejor la siguiente tanda de post, vamos a ver muy muy de pasada la sintaxis básica de ansible.

Antes de empezar, tener claro que ,si seguimos al pie de la letra el documento de formación de RedHat Automation with Ansible 2.0 DO407 tenemos que Ansible NO funciona con Pyton 3. EL nodo de control debe de tener Pyton 2.6 o 2.7 . Pero ,el sistema en el que esta instalado el tower tiene un pyton 3, con lo que habra que coger la documentacion con pinzas

Apertura y cierre del playbook

En Yaml el código se abre con tres guiones consecutivos
[code lang=»py»]

[/code]

Cadenas

Las cadenas en Yaml no necesitan comillas, puedes incluirlas con comillas simple, debe o sin comillas, y funcionaria en los tres casos

[code lang=»py»]

‘ Esto es una cadena ‘
"Esto es una cadena "
Esto es una cadena
[/code]

Cadenas multilinea

Al no ser necesario el uso de comillas para las cadenas la primera pregunta que nos viene a la cabeza es ¿como ponemos las cadenas multilinea?
La respuesta es muy sencilla, tenemos dos maneras

– Mediante el caracter |
[code lang=»py»]

msg: |
Esto es una cadena
de mas de dos lineas
y mas de tres
[/code]

– Mediante el caracter >
[code lang=»py»]
msg: >
Esto es una cadena
de mas de dos lineas
y mas de tres
[/code]

Listas

Las listas en Ansible vienen delimitadas por el caracter
[code lang=»py»]

– perro
– gato
– tortuga
– canario
[/code]

También pueden configurarse delimitadas por comas entre
[code lang=»py»]
animales:
[ perro, gato , tortuga , canario ]
[/code]

Comentarios

Los comentarios al igual que en la programación bash se hacen con el caracter #

[code lang=»py»]
# Esto es un comentario
[/code]

Chequeo de sintaxis

Al ser un lenguaje interpretado o hay compilación, pero si que puedes comprobar si la sintaxis es correcta.

La comprobación puede llevarse a cabo directamente con el pyton con el comando

python -c 'import yaml, sys; print yaml.load(sys.stdin)' < playbook.yml

Pero , la mas sencilla para nosotros y mas aconsejable si estamos trabajando con ansible es hacerlo mediante el flan --syntax-check del comando ansible-playbook

ansible-playbook --syntax-check  playbook.yml