Tabla de Contenidos

Ansible

Definicion

Ansible es una plataforma de software libre para configurar y administrar ordenadores. Combina instalación multi-nodo, ejecuciones de tareas ad hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación.

Fichero de configuracion ansible

En este fichero podemos establecer los distintos hosts que queramos administrar de manera automatizada; pero tenemos que crear una carpeta llamada ansible dentro del directorio /etc; y ahí insertar el fichero hosts:

Y ahora debemos añadir estas líneas, donde pondremos primero las IP de aquellos equipos que queramos administrar, y luego abajo ponemos para que siempre se utilice la última versión de Python:

Y ahora podemos probar en lanzar un ping al equipo que tenemos añadido dentro del fichero hosts; y si vemos algo como esto es que tenemos conectividad:

Si tuviera configurado otro grupo de servidores, podría mandarlo a todos poniendo dos puntos:

También puedo mandar el ping a un sólo servidor, sin especificar ningún grupo:

También podemos lanzar un comando cualquiera utilizando el módulo shell, por ejemplo crear un directorio en el actuar espacio de trabajo dentro del servidor, utilizando el usuario mario o root, aunque para ello debemos haber configurado correctamente el usuario root dentro de la parte de “Fichero de configuración automático”

Y vemos que el fichero se creó correctamente en el servidor:

Instalar servicio ssh en linux

El primer paso será instalar ssh de esta forma:

sudo apt install openssh-server

Después utilizaremos este comando para comprobar el estado de ejecución de SSH; y deberíamos verlo en ejecución:

sudo systemctl status ssh

Y por último podemos asegurarnos de que permanezca activado con este comando:

Ahora tendremos que configurar el firewall para que permita conexiones por SSH sin problema; y para ello creamos esta regla utilizando este comando:

sudo ufw allow ssh

Y ahora sólo tenemos que reiniciar el servicio SSH para aplicar todos estos cambios; para ello utilizaremos este comando:

sudo service ssh restart

Ahora vamos a probarlo desde otro equipo poniendo la IP del equipo donde estamos configurando el servicio SSH y poniendo el username:

Modulo copy

COPIAR DESDE EQUIPO LOCAL A REMOTO

Para copiar un fichero desde nuestra máquina local a otra máquina remota, debemos hacer este código y muy importante poner la variable $HOME para que se vaya sustituyendo por el nombre de usuario correspondiente:

COPIAR UN ARCHIVO DE UNA UBICACIÓN A OTRA DENTRO DEL EQUIPO REMOTO

Aquí vamos a copiar un archivo de una ubicación a otra dentro de la misma máquina remota:

PARA ESCRIBIR DENTRO DE UN DOCUMENTO CON ANSIBLE Lo haremos de esta manera, utilizando content para indicar el testo y en destino la ruta de dicho documento:

Modulo_file

CREAR UN NUEVO FICHERO EN BLANCO CON ANSIBLE

CREAR VARIOS ARCHIVOS A LA VEZ EN ANSIBLE

Para crear varios archivos, tendremos que utilizar una variable del sistema llamada item para que se creen varios archivos a la vez:

PARA CREAR CARPETAS O DIRECTORIOS CON ANSIBLE

Modulo gestor de paquetes apt

Con este módulo podemos ejecutar el comando APT para instalar paquetes sobre los equipos que queramos administrar. Esto lo haremos realizando la siguiente configuración dentro del playbook y teniendo en cuenta el fichero de configuración de ansible para que no haya errores (utilizamos become: true para ejecutar el comando con permisos de root)

Y para eliminar un programa, lo haríamos de esta forma:

Ahora para aplicar un apt autoremove, haríamos esto:

Para actualizar todos los repositorios, sería de esta forma:

modulo_service

Podemos también iniciar un servicio de esta manera:

Pero si queremos detenerlo, será de esta forma:

Si queremos hacerle un enable, sería de esta otra forma:

Para hacer un restart:

Playbooks

Esto sirve para automatizar la ejecución de muchos comandos en los distintos servidores; es como una receta o un script donde se guardan los distintos comandos a ejecutar y en qué servidores. Por tanto creamos el fichero con extensión yml:

Y a este fichero le pondremos esta estructura para hacer un ping a todas las máquinas dentro del grupo servers, y luego crear dos archivos y hacer un ping:

Y ahora para lanzar este playbook a la máquina o al grupo de máquinas que estén dentro del grupo servers, debemos ejecutar este comando:

Y ahora vemos que en la máquina administrada se crearon correctamente estos dos archivos dentro del actual directorio de trabajo:

En caso de querer ejecutar un comando en un solo equipo, debemos especificarlo en el playbook de esta manera:

Variables de ansible

Podemos crear variables como en cualquier lenguaje de programación. Por ejemplo en este caso voy a crear una variable llamada saludos que va a tener en su interior un hola mario!!; y voy a imprimir todo el texto con esta variable en un documento de texto utilizando el módulo copy: