Lab05 Ansible I

Objetivo

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.

Requisitos

  • Ansible instalado en el host de control.
  • Conexión mediante lleves ssh con los hosts del laboratorio con el usuario que ejecutara Ansible.
  • Configuración correcta para escalar privilegios utilizando sudo del usuario que ejecute Ansible.

Mapa de red

+----------+      +--------+           +----------+
|          |      |        |           |          |<--> Lan 10.0.0.1/28
|          |      |        |           | Firewall |
| Internet |<---> | Router |<---Wan--->| OPNsense |<--> DMZINT 10.0.0.17/28
|          |      |        |           |          |
|          |      |        |           |          |<--> DMZEXT 10.0.0.33/28
+----------+      +--------+           +----------+

Instalacion Ansible

La instalación se realizaremos desde el terminal.

Fedora:

$sudo dnf install ansible

CentOS:

$sudo yum install epel-release
$sudo yum install ansible

Ubuntu:

$sudo apt update
$sudo apt install software-properties-common
$sudo add-apt-repository --yes --update ppa:ansible/ansible
$sudo apt install ansible

Debian 10

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

Debian 11

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

Conexión ssh

Podéis seguir mi guía aquí

Escalado de privilegios

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

Configuracion

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.

Fichero de inventario (inventario)

[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 de configuracion (ansible.cfg)

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
/////////////////////////////

Comprobación

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.