Automatización con Ansible playbooks#
Los playbooks son archivos de texto plano escritos en lenguaje YAML(Yet Another Markup Language), que permiten desarrollar multiples tareas de automatización y convertirlas en tareas reutilizables.
Haciendo analogía podemos decir que Ansible ad-hoc son equivalentes a los comandos de bash y Ansible playbooks son equivalentes a scripts.
Sintaxis YAML#
Ejemplo de archivo YAML
Del ejemplo anterior podemos decir que:- Todo archivo yaml debe iniciar con tres
---guiones. - Los comentarios inician con el simbolo
#numeral. - Las listas se especifica cada elemento iniciando con un
-guion.
Para definir multiples lineas se pueden usar los caracteres | y >
parrafo: |
Este es un parrafo
con mas de una linea
de contenido y se respetaran
espacios y saltos de linea.
Este se un parrafo que al interpretarse todos los saltos de linea seran espacios..
Podemos definir tambien diccionarios de la siguiente forma clave: valor:
Los playbooks o archivos YAML se pueden crear usando una extension .yaml o .yml. YAML se basa en indentacion para definir los bloques de codigo que se estan escribiendo, es recomendado utilizar dos espacios para cada indentación.
Si se esta usando vim como editor de texto se recomienda hacer la siguiente configuración. En el archivo ~/.vimrc se debe agregar:
Esta configuración convertira todos los caracteres de tabulación en espacios y agregar solamente 2 espacios cada vez que presionemos la tecla tab.Primer Playbook#
Instrucciones:
- Crear un directorio para contener el proyecto.
- Crear un archivo de configuración de ansible.
- Crear un archivo de inventario.
mkdir -p ~/Proyectos/IntroAnsible
touch ~/Proyectos/IntroAnsible/ansible.cfg
touch ~/Proyectos/IntroAnsible/inventario.ini
ansible.cfg
[defaults]
inventory = inventario
remote_user = ansibleadmin
[privilege_escalation]
become = true
become_method = sudo
become_user = root
become_ask_pass = false
inventory
mail.example.com
[webservers]
foo.example.com
bar.example.com
[dbservers]
one.example.com
two.example.com
three.example.com
[webinfra:children]
webservers
dbservers
createuser.yml
---
- name: Primer Play
hosts: all
tasks:
- name: Crear usuario nuevo
user:
name: student
comment: Edutek Student
...
Ref: Ansible Doc