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.
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:
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:
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:
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
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:
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:
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: