Actividad 4: Ansible
Teoría:
Ansible es una herramienta moderna, eficaz, segura y además sencilla de utilizar que permite automatizar la administración de un parque de equipos.
Lea la introducción a Ansible que se encuentra en: Apuntes sobre Ansible.
Para realizar la actividad es necesario configurar la autenticación de clave pública de manera que el usuario sin privilegios de la máquina en la que se ejecuta Ansible pueda iniciar sesión como root en las máquinas gestionadas.
La información sobre cómo configurar la autenticación con clave pública se encuentra en:
- Página 53 de Administració de sistemes operatius de xarxes.
- YouTube: OpenSSH: Autenticación con clave pública entre dos máquinas.
Para utilizar Ansible no es necesario ser administrador. Únicamente será necesario convertirse en administrador para instalar Ansible y para editar el inventario por defecto: /etc/ansible/hosts
.
Puede consultar algunos de los playbooks utilizados en el instituto en: https://github.com/vcarceler/playbooks.
Entrega de la actividad:
La actividad se entregará en forma de documento HTML 5. En el documento deberá aparecer el fragmento de enunciando en el que se está trabajando y su resolución con los comandos y explicaciones que sean necesarios.
Por ejemplo:
Indique cómo establecer una sesión SSH con la máquina virtual de escritorio.
ssh usuario@192.168.0.100
Cuando se nos solicita la contraseña la introducimos.
Si la actividad solicita que se incluya un vídeo demostrativo puede utilizar cualquier programa para guardar el escritorio como:
- La combinación de teclas
CTRL + ALT + SHIFT + R
permite activar y desactivar la grabación del escritorio en Ubuntu. - Un programa especializado como OBS Studio que se encuentra en los repositorios de Ubuntu con el nombre: obs-studio.
El vídeo obtenido se subirá a Youtube y estará insertado en el documento HTML 5.
Desarrollo de la actividad:
Prepare dos MVs Ubuntu Server 20.04 con:
- Interfaz de red en modo puente.
- IP y configuración de red estática.
- La primera tendrá por hostname
ansible
y la segundahost-x
. - La autenticación con clave pública de manera que usuario en la máquina
ansible
pueda iniciar sesión como root en la máquinahost-x
.
Una vez que haya comprobado que funciona la autenticación de clave pública haga un clon de host-x
y cambie el hostname a host-1
. La idea es que Ansible controlará host-1 y si es necesario se podrá clonar a partir de host-x
diferentes equipos: host-2
, host-3
, host-4
... Cada uno con su propia dirección IP para que Ansible pueda ejecutar un playbook en varios equipos.
- Indique las direcciones IP de las MVs utilizadas.
- Instale Ansible en la máquina
ansible
. - Edite el fichero
/etc/ansible/hosts
para añadir las siguientes líneas:
[equipos] 192.168.1.201 192.168.1.202 192.168.1.203
En mi caso los hosts controlados van a tener las IPs 192.168.1.201, 192.168.1.202 y 192.168.1.203. Utilice las direcciones que corresponda en su caso. Deberán declararse como mínimo 3 equipos para que Ansible los gestione. - El módulo
setup
permite obtener facts sobre la máquina remota. Compruebe que todo funciona como es debido con el siguiente comando:
usuario@ansible:~$ ansible -u root -m setup 192.168.1.201 192.168.1.201 | SUCCESS => { "ansible_facts": { "ansible_all_ipv4_addresses": [ "192.168.1.201" ], :
- La salida del comando anterior está en formato JSON. Muestre los bloques dedicados a:
- ansible_default_ipv4
- ansible_lsb
- ansible_nodename
- ansible_processor
- Defina el fichero
/home/usuario/playbook-ejemplo.yml
con el siguiente contenido:--- - hosts: equipos user: root tasks: - name: Instala lolcat apt: name: lolcat state: present - name: Hace apt update e instala una lista de paquetes. ipcalc, net-tools, glances apt: update_cache: yes pkg: - ipcalc - net-tools - glances
- Lance el playbook que ha preparado y observe la salida.
usuario@ansible:~$ ansible-playbook playbook-ejemplo.yml
- ¿Con qué equipos ha intentado conectar? ¿Con qué equipos ha podido conectar? ¿Cuántas tareas tiene el playbook? ¿Con qué estado han acabado esas tareas?
- Compruebe en la máquina gestionada si están instaladas las herramientas:
lolcat
,ipcalc
,ifconfig
,glances
. - Vuelva a lanzar el playbook. ¿Qué ocurre?
- Desinstale en la máquina gestionada alguno de los 4 paquetes que instaló el playbook y vuelva a lanzar Ansible. ¿Qué ocurre?
- Arranque MVs para cada uno de los equipos declarados en el fichero inventario
/etc/ansible/hosts
. Vuelva a lanzar el playbook. ¿Qué ocurre? - Busque la documentación del módulo de Ansible que permite gestionar paquetes con
snap
.- ¿Quién desarrolló el módulo?
- ¿Cómo se instala un snap?
- ¿Cómo se desinstala un snap?
- Escriba el playbook
instala-vitetris.yml
de manera que se instale el snapvitetris
en los ordenadores declarados en el inventario. - Grabe un vídeo en el que se pueda ver:
- Como se ejecuta el playbook que instala
vitetris
cuando solo está encendido uno de los tres ordenadores gestionados por Ansible. - Como se vuelve a ejecutar el playbook anterior pero con los tres ordenadores encendidos.
- Como se vuelve a ejecutar el playbook anterior cuando los tres ordenadores están encendidos y
vitetris
ya está instalado en todos.
- Como se ejecuta el playbook que instala