Saltar a contenido

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

---
# Una lista
- Elemento 1
- Elemento 2
- Elemento 3
- Elemento 4
...
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.

parrafo: >
  Este se un parrafo
  que al interpretarse
  todos los saltos de linea
  seran espacios.
Este ultimo se vera asi Este se un parrafo que al interpretarse todos los saltos de linea seran espacios..

Podemos definir tambien diccionarios de la siguiente forma clave: valor:

estudiante:
  usuario: student 
  shell: /bin/bash
  grupo: admin
Y valores booleanos se pueden definir de la siguiente forma:

crear_home: true
configurar_sudo: false

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:

autocmd FileType yaml setlocal ai ts=2 sw=2 et
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