En el curso que realicé de Ansible, en KodeKloud, enseñaban a montar un laboratorio y os quiero mostrar, cómo de sencillo es.

Para este laboratorio necesitamos lo siguiente:

  • VirtualBox (Disponible en su sitio oficial virtualbox.org)

  • Un disco virtual de CentOS para VirtualBox (Disponible en la web de osboxes.org)

El primer paso, será descargarnos VirtualBox e instalarlo. Voy a obviar cómo es el proceso de instalación porque va a depender de vuestro sistema, si es Windows, Mac o Linux (No obstante si tienes alguna duda, puedes comentármelo)

Descarga de VirtualBox según Sistema Operativo

Una vez tengamos instalado VirtualBox, vamos a descargar la imagen del disco de osboxes.

Cuando estemos en la web, debemos seleccionar “VM IMAGES” y en el desplegable hacer clic en VirtualBox Images.

OSBOXES web, descargar imagen VBox

Luego, entre todas las distribuciones, seleccionaremos CentOS y hacemos clic en VirtualBox (VDI) image.

Descarga VDI de CentOS

Vamos a descargar la versión más reciente disponible, que es CentOS 9 y su versión Server.

Descargar CentOS 9 vdi

Una vez descargado, es recomendable verificar que el hash del fichero coincide con el indicado en la web.

En el caso de usar Linux usaremos el comando siguiente:

sha256sum <fichero>

Comprobar hash en linux

Comprobar hash en Windows

Si usas Windows, abre una consola de PowerShell, y ejecuta el cmdlet siguiente:

Get-FileHash <fichero>

Tras comprobar que coinciden, abriremos VirtualBox y añadiremos una nueva máquina virtual.

Crear nueva máquina virtual en VirtualBox

Nos aparecerá la ventana de creación de máquina virtual, dónde daremos un nombre, seleccionaremos el lugar dónde se ubicará la máquina virtual y elegiremos el tipo de Sistema Operativo para esa máquina. Una vez rellenado vamos al siguiente apartado haciendo clic en Siguiente.

Nombre, ubicación, tipo SO de la máquina virtual

En este apartado Hardware indicaremos cuanta memoria y cuantas CPUs vamos a usar. En este caso 2GB y 2 CPUs son suficientes.

Hardware de la máquina virtual

El siguiente paso es la creación del disco duro. En nuestro caso no vamos a crear disco, ya que lo hemos descargado previamente. Seleccionamos la opción dos, “Usar un archivo de disco duro virtual existente”.

Disco duro de la máquina virtual

En la ventana selector de discos, hacemos clic en Añadir

Añadir disco duro a la máquina virtual

Ahora buscamos el disco y lo seleccionamos haciendo doble clic o bien en Abrir.

Seleccionar vdi

Ahora veremos que el disco duro nos aparece en el selector de disco duro, le seleccionamos

Disco seleccionado listo para adjuntar a la máquina virtual

Y ya tendremos el disco duro asociado a la máquina virtual. Hacemos clic en Siguiente.

Disco duro seleccionado para usar

Nos aparecerá un Resumen de la máquina que vamos a crear, si todo es correcto, hacemos clic en Terminar.

Resumen de la configuración de la máquina virtual

Una vez creada esto es lo que veremos en VirtualBox.

Vista de Virtual Box donde se ve la nueva máquina creada

Antes de iniciar la máquina, vamos a seleccionar sus propiedades para cambiar el adaptador de red de NAT a Adaptador puente (Bridge). Esto nos va a permitir conectarnos a la máquina virtual vía SSH al estar en nuestra red.

Cambiamos el adaptador de red de NAT a Bridge

Una vez hecho el cambio de red, vamos a iniciar la máquina.

Iniciar máquina virtual

Esto es lo que veremos una vez haya arrancado. El usuario y la contraseña están indicados en la web de osboxes. En el laboratorio, primero haremos uso del usuario root, luego crearemos uno propio.

login

Ahora que ya estamos conectados, vamos hacer unos cambios.

Lo primero, vamos a cambiar el idioma del teclado a español, para ello ejecutaremos:

localectl set-keymap es

Ahora, vamos a cambiar la zona horaria:

timedatectl set-timezone Europe/Madrid

Por último vamos a editar el fichero /etc/hostname para añadir el nombre de la máquina y editaremos el fichero /etc/hosts para añadir también el nombre de la máquina.

Una vez que hayamos hecho estos cambios, vamos a crear un usuario propio y añadirlo al grupo wheel para hacer uso del comando sudo.

Para añadir el usuario ejecutaremos el comando siguiente, donde usuario será el nombre para nuestro usuario:

useradd <usuario>

Ahora añadiremos el usuario al grupo wheel:

usermod -a -G wheel <usuario>

Después de hacer los pasos anteriores vamos a ver que IP tenemos asignada, para ello lanzaremos el comando siguiente:

ip address

Veréis que la interfaz de red no tiene una IP asignada, es porque no está activada la conexión.

Debemos ejecutar nmtui y seleccionar “Activar una conexión”.

Herramienta NetworkManager TUI.Nos permite modificar los datos de una interfaz, activar una interfaz y cambiar el nombre de host

Después reiniciamos la máquina ejecutando reboot. Una vez hecho, volvemos a ejecutar ip address.

IP de la máquina de Ansible

El siguiente paso no es obligatorio, pero puede ayudarte a mejorar la organización de máquinas en VirtualBox.

Seleccionamos la máquina virtual, hacemos clic derecho y seleccionaremos Mover a grupo, Nueva.

Mover máquina virtual a un grupo

Una vez tengamos el grupo, le renombraremos haciendo clic botón derecho sobre éste.

Renombrar grupo

Y ya tenemos listo nuestro grupo.

Grupo creado

Ahora que ya tenemos esta primera máquina lista, vamos a clonarla. Seleccionamos la máquina, clic derecho ratón y seleccionamos Clonar.

Clonar máquina

Nos aparecerá la ventana “Clonar máquina virtual”. Debemos darle un nombre a la máquina clonada y la ruta dónde se alojará. Además tendremos que seleccionar en “Tipo de Clonado (Type Clone)”, la opción “Clonación enlazada” y en Opciones adicionales, elegir “Generar nuevas direcciones MAC para todos los adaptadores de red”. Tras lo anterior, hacemos clic en Terminar para que se haga la clonación.

Opciones para clonar máquina

Volveremos a repetir el paso anterior para tener un segunda máquina objetivo.

Ahora arrancaremos las dos máquinas que hemos clonado.

Grupo Ansible-Lab corriendo las máquinas de ansible y objetivos

Nos conectaremos con el usuario root y modificaremos los ficheros /etc/hostnamey /etc/hosts para añadir el nombre de estas máquinas. Luego le daremos un reinicio a las dos máquinas.

Una vez reiniciadas, nos conectamos con el usuario que creamos anteriormente y ejecutamos un ip address para ver las IP que se nos ha asignado. Al ser un clon de la máquina origen, no es necesario activar la interfaz de red.

IPs de las máquinas objetivo

Después vamos a probar que podemos acceder vía SSH a las máquinas con el usuario que creamos anteriormente desde nuestro equipo.

Conexión SSH a máquina Ansible

Conexión SSH a máquina objetivo 1

Conexión SSH a máquina objetivo 2

Realizada la comprobación anterior, vamos a proceder a instalar Ansible, siguiendo la documentación oficial para nuestra distribución.

Os dejo el enlace https://docs.ansible.com/ansible/latest/installation_guide/installation_distros.html#installing-ansible-from-epel

Doc. oficial Ansible para EPEL

Cómo podéis ver, para CentOS necesitamos el repositorio EPEL (Extra Packages for Enterprise Linux).

Podéis leer la documentación de EPEL en el siguiente enlace: https://docs.fedoraproject.org/en-US/epel/getting-started/

En nuestro caso, para CentOS 9 necesitamos estos dos paquetes: epel release y epel-next-release. Y también hay que habilitar el repositorio crb.

Doc.oficial EPEL

Así que ejecutaremos:

sudo dnf config-manager --set-enable crb

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm

Instalar paquete epel-release

Instalar paquete epel-next-release

Realizado el paso anterior, procederemos a la instalación de Ansible.

sudo dnf install ansible

Instalar paquete de Ansible

Una vez instalado, para verificar que se ha instalado correctamente, ejecutaremos lo siguiente:

ansible --version

Comprobar que se ha instalado correctamente, viendo la versión

Ahora vamos a comprobar que hay conexión SSH entre la máquina que tiene instalado Ansible y una de las máquinas clonadas.

SSH máquina Ansible contra máquina objetivo 1

Verificado que hay conexión, regresamos a la máquina de Ansible y crearemos un directorio llamado test-project para hacer pruebas y accederemos a él.

mkdir test-project

cd test-project/

Comando para crear la carpeta test-project y acceder a ella

Dentro de este directorio, crearemos un fichero que va a ser nuestro inventario, el que va a contener la información de las máquinas objetivo.

cat > inventory.txt

target1 ansible_host=ip_target1 ansible_ssh_pass=contraseña_target1

Debéis cambiar ip_target1 por la IP de vuestra máquina virtual y en contraseña_target1 poner la del usuario que creaste anteriormente.

Crear fichero de inventario que contendrá la información de las máquina objetivo

Si hacemos un cat al fichero veremos que ahora tenemos en nuestro inventario uno de los host.

Para comprobar que funciona nuestro inventario, vamos a ejecutar el siguiente comando de ansible.

ansible target1 -m ping -i inventory.txt

PING a una máquina del inventario mediante ansible

Cómo vemos ha funcionado.

Ahora hay que añadir al inventario el target2 editando con vi o nano el fichero de inventory.txt

Una vez añadido al inventario, si intentamos hacer un ping como hicimos anteriormente, fallará.

ansible target2 -m ping -i inventory.txt

PING a una máquina medianete ansible que ha fallado

Si vemos el error, dice que utilizando contraseña SSH en lugar de una key no es posible porque en la configuración de ansible está habilitado Key checking y sshpass no lo soporta. Ese mensaje también nos está dando cómo solucionarlo. Debemos añadir el fingerprint a nuestro fichero de hosts conocidos.

Hacer lo anterior, es sencillo, ejecutar un SSH desde la máquina de Ansible al target2 para almacenar el fingerprint.

SSH máquina Ansible a la máquina objetivo 2

Después de acceder vía SSH y salir de la máquina target2, ejecutamos el ping vía Ansible, veremos que ahora no falla.

PING con ansible a la máquina objetivo 2

Y con esto tendremos un laboratorio de Ansible funcionando para practicar y seguir aprendiendo.