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)
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.
Luego, entre todas las distribuciones, seleccionaremos CentOS y hacemos clic en VirtualBox (VDI) image.
Vamos a descargar la versión más reciente disponible, que es CentOS 9 y su versión Server.
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>
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.
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.
En este apartado Hardware indicaremos cuanta memoria y cuantas CPUs vamos a usar. En este caso 2GB y 2 CPUs son suficientes.
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”.
En la ventana selector de discos, hacemos clic en Añadir
Ahora buscamos el disco y lo seleccionamos haciendo doble clic o bien en Abrir.
Ahora veremos que el disco duro nos aparece en el selector de disco duro, le seleccionamos
Y ya tendremos el disco duro asociado a la máquina virtual. Hacemos clic en Siguiente.
Nos aparecerá un Resumen de la máquina que vamos a crear, si todo es correcto, hacemos clic en Terminar.
Una vez creada esto es lo que veremos en VirtualBox.
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.
Una vez hecho el cambio de red, vamos a iniciar la máquina.
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.
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”.
Después reiniciamos la máquina ejecutando reboot
. Una vez hecho, volvemos a ejecutar ip address
.
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.
Una vez tengamos el grupo, le renombraremos haciendo clic botón derecho sobre éste.
Y ya tenemos listo nuestro grupo.
Ahora que ya tenemos esta primera máquina lista, vamos a clonarla. Seleccionamos la máquina, clic derecho ratón y seleccionamos Clonar.
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.
Volveremos a repetir el paso anterior para tener un segunda máquina objetivo.
Ahora arrancaremos las dos máquinas que hemos clonado.
Nos conectaremos con el usuario root y modificaremos los ficheros /etc/hostname
y /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.
Después vamos a probar que podemos acceder vía SSH a las máquinas con el usuario que creamos anteriormente desde nuestro equipo.
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
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.
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
Realizado el paso anterior, procederemos a la instalación de Ansible.
sudo dnf install ansible
Una vez instalado, para verificar que se ha instalado correctamente, ejecutaremos lo siguiente:
ansible --version
Ahora vamos a comprobar que hay conexión SSH entre la máquina que tiene instalado Ansible y una de las máquinas clonadas.
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/
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.
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
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
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.
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.
Y con esto tendremos un laboratorio de Ansible funcionando para practicar y seguir aprendiendo.