Dado el crecimiento del numero de hosts de nuestro laboratorio las labores de actualización, instalación, etc ya comienzan a ser un poco tediosas. Con el objetivo de optimizar todo esto e implantar una nueva herramienta. Ansible nos ayudara en todo esto.
+----------+ +--------+ +----------+
| | | | | |<--> Lan 10.0.0.1/28
| | | | | Firewall |
| Internet |<---> | Router |<---Wan--->| OPNsense |<--> DMZINT 10.0.0.17/28
| | | | | |
| | | | | |<--> DMZEXT 10.0.0.33/28
+----------+ +--------+ +----------+
La instalación se realizaremos desde el terminal.
$sudo dnf install ansible
$sudo yum install epel-release
$sudo yum install ansible
$sudo apt update
$sudo apt install software-properties-common
$sudo add-apt-repository --yes --update ppa:ansible/ansible
$sudo apt install ansible
Añadimos el repositorio en /etc/apt/sources.list o /etc/apt/sources.list.d/ansible.list.
deb http://ppa.launchpad.net/ansible/ansible/ubuntu bionic main
$sudo apt-get install gnupg2 curl wget -y
$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$sudo apt update
$sudo apt install ansible
Añadimos el repositorio en /etc/apt/sources.list o /etc/apt/sources.list.d/ansible.list.
deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main
$sudo apt-get install gnupg2 curl wget -y
$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$sudo apt update
$sudo apt install ansible
Comprobamos que todo esta ok
$ansible --version
Podéis seguir mi guía aquí
Para que el usuario que ejecute Ansible pueda escalar privilegios correctamente tenemos que configurar sudo. Añadiremos las siguiente lineas con ejecutando visudo como root. Quedaría algo así :
/////
%sudo ALL=(ALL:ALL) ALL
sistemas ALL=NOPASSWD: ALL
Tanto el fichero de configuración de Ansible (ansible.cfg) como el de inventario (inventario)los tengo en un directorio dedicado únicamente a la gestión del laboratorio. Tienen el siguiente contenido.
[all]
10.0.0.2
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.18
10.0.0.19
10.0.0.20
10.0.0.21
10.0.0.23
10.0.0.35
10.0.0.34
10.0.0.38
[debian]
10.0.0.2
10.0.0.35
[fedora]
10.0.0.4
[ubuntu]
10.0.0.6
10.0.0.18
10.0.0.19
10.0.0.20
10.0.0.21
10.0.0.23
10.0.0.34
[rocky]
10.0.0.38
[manjaro]
10.0.0.5
[all:vars]
ansible_python_interpreter=/usr/bin/python3
Fichero copiado del de defecto de la instalación y modificado lo siguiente:
/////////////////////////////
[defaults]
# some basic default values...
inventory = ./inventario
/////////////////////////////
remote_user = sistemas
/////////////////////////////
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
/////////////////////////////
Para verificar que Ansible esta configurado correctamente ejecutaremos el modulo ping.
$ansible all -m ping
Como se puede observar se ejecuta correctamente. Sin esta comprobación correcta no podemos continuar.