¿Qué es Ansible?, Como bien definen su propios creadores, Ansible es una forma sencilla de automatizar configuraciones, desplegar aplicaciones o en general realizar multitud de tareas de administración de forma automática y en múltiples nodos simultáneamente.
Descripción de entorno de pruebas:
Para nuestras pruebas, vamos a desplegar tres maquinas virtuales de la siguiente forma:
- Controller: maquina donde vamos a instalar y configurar ansible. (Linux KUbuntu 16.04.1)
- Nodo01: servidor de pruebas 1. (Linux Ubuntu Server 16.04.1)
- Nodo02: servidor de pruebas 2. (Linux Ubuntu Server 16.04.1)
Instalando Ansible:
La instalación de Ansible es bastante sencilla, pero antes de nada tenemos que confirmar que tenemos instalado Python 2.6 o superior en nuestra máquina:
1 2 |
> python -V Python 2.7.12 |
Como observamos, la distribución KUbuntu que utilizamos ya tienen una versión de Python preinstalada totalmente compatible.
También hay que tener instalado Python 2.6 o superior en nuestros nodos:
1 2 |
nodo01> sudo apt-get install python nodo02> sudo apt-get install python |
Solo nos queda proceder con la instalación en la maquina Controller. Para ello, utilizaremos APT con el propio repositorio de Ansible:
1 2 3 4 |
> sudo apt-get install software-properties-common > sudo apt-add-repository ppa:ansible/ansible > sudo apt-get update > sudo apt-get install ansible |
Como resultado obtendremos los archivos de configuración ubicados en /etc/ansible .
Lo siguiente que debemos hacer es añadir a nuestro archivos /etc/ansible/hosts los servidores de pruebas que tenemos preparados.
1 2 3 |
[pruebas] 192.168.1.151 192.168.1.152 |
Para que Ansible pueda conectarse a los diferentes nodos, es necesario que estos dispongan de la llave SSH generada en nuestro Controller. Así que ejecutamos el siguiente comando en el Controller (aceptando los valores por defecto en todos los casos):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
> ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/sysadmin/.ssh/id_rsa): Created directory '/home/sysadmin/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/sisadmin/.ssh/id_rsa. Your public key has been saved in /home/sisadmin/.ssh/id_rsa.pub. The key fingerprint is: SHA256:P0bVhHXPPbaSd3a4dfjIJ4SrVU6bEmbocDBYs3GBLH4c sisadmin@pcpvm01 The key's randomart image is: +---[RSA 2048]----+ |.++oo..++o o++.| |oo1Eo ++= . oF=oB| | .o.o,.= + ....O=| | .+. . o. . o| | ...o S . | | .o o | | . | | . + | | | +----[SHA256]-----+ |
Esto nos creará dos ficheros: ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub , de los cuales, hay que copiar la llave pública a los distintos nodos:
1 2 |
> ssh-copy-id -i id_rsa.pub usuario@192.168.1.151 > ssh-copy-id -i id_rsa.pub usuario@192.168.1.152 |
Ahora ya podemos ejecutar nuestra comando de prueba:
1 2 3 4 5 6 |
> ansible all -a uptime -u usuario_nodos 192.168.1.152 | SUCCESS | rc=0 >> 04:02:23 up 1:45, 2 users, load average: 0.00, 0.00, 0.00 192.168.1.151 | SUCCESS | rc=0 >> 04:02:23 up 1:45, 3 users, load average: 0.00, 0.00, 0.00 |
Como se puede observar en esta sencilla prueba, estamos ejecutando el comando Uptime en todos los servidores incluidos en nuestro ficheros Hosts. De los cuales nos muestra el resultado correspondiente a cada nodo.
En próximos artículos profundizaremos más en Ansible, los PlayBooks y Task
Referencias de interés:
- http://docs.ansible.com/ansible/
- https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-ansible-on-ubuntu-14-04