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