Ansible

Es una herramienta de orquestación que automatiza la gestión de configuraciones y el despliegue de aplicaciones. Nos permitirá gestionar nuestros servidores sin necesidad de agente de forma sencilla y funcionando en paralelo.

Para poder usar ansible sólo se necesita un equipo controlador con ansible instalado y conexión ssh con los equipos a gestionar , y en los nodos remotos tener instalado python .

Utiliza YAML para describir las acciones a realizar en los diferentes nodos remotos.

Instalación en Centos

Instalación en Centos <sxh>yum install ansible</sxh>

Para comprobar si todo está correcto ejecutamos <sxh>ansible –version</sxh>

Conceptos básicos

  • Inventario . Archivo donde agrupamos una lista de servidores. Por defecto en /etc/ansible/hosts
  • Playbooks. Es un archivo donde listamos las tareas que de deben ejecutar. Se escribe en formato YAML
  • Task. Un bloque dentro del Playbook , en el que definimos una acción concreta a realizar.
  • Includes
  • Roles

Comandos básicos

Configurar el acceso a los clientes

Verificar que tenemos acceso a los clientes <sxh>ansible -i miinventario -m ping all</sxh>

Generamos nuestras llaves ssh <sxh>ssh-keygen</sxh> <sxh bash> [root@localhost ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:LXpEhlOQ04nsA3CF/nKfPB3GgDJv0JBw2TZNwgGF1kI root@localhost.localdomain The key's randomart image is: +—[RSA 2048]—-+

o+E&*Oo.
oX @++
o Bo+o
= =+..
* .So.
. =o .+
+.o.+ .
.= .
.

+—-[SHA256]—–+ [root@localhost ~]# </sxh> Una vez finalizado el proceso de generación disponemos de 2 ficheros: ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub

El siguiente paso sería copiar nuestro fichero de llave pública al cliente <sxh>ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@ipcliente</sxh>

si todo ha ido bien ahora deberiamos de poder acceder desde nuestro servidor de ansible al equipo cliente ejecutando <sxh>ssh ip_maquina_cliente</sxh>

Configurar nuestra lista de clientes

El fichero que viene por defecto para indicar los clientes es /etc/ansible/hosts aunque nosotros podemos definir distintos ficheros según nuestas necesidades.

Editamos es fichero por defecto y definimos los equipos clientes <sxh>vi /etc/ansible/hosts</sxh>

[centos]
hostcliente.midominio.local
hostcliente2.midominio.net

Para comprobar que todos nuestros nodos reponden podemos realizar un ping.

<sxh>ansible all -m ping </sxh>

Si por ejemplo queremos ejecutar un comando en todos nuestros nodos:

<sxh>ansible all -a “/etc/init.d/httpd start”</sxh>

Referencias