Playbooks de Ansible para Ubuntu 20.04
Ya están disponibles los playbooks de Ansible para las aulas con Ubuntu 20.04 y se pueden consultar en: https://github.com/vcarceler/playbooks-ubuntu2004.
Aprovechando la nueva versión de Ubuntu se han reescrito utilizando roles, lo que ha permitido obtener playbooks mucho más limpios y ordenados. En el momento de escribir este artículo el playbook de un aula incluye 83 tareas que, ejecutadas en un ordenador con disco duro mecánico, se completan aproximadamente en 1 hora.
Para el aula Stallman tenemos:
--- - hosts: stallman user: root vars: grupos: adm,cdrom,dialout,kvm,libvirt,lpadmin,lxd,plugdev,sambashare,ubridge,vboxusers roles: - delete-users - lock-sshd - zsys-gc - swappiness-0 - vasilisa - activate-unattended-upgrades - role: cambia-hostname vars: base_hostname: "stallman" - gnome3-dconf - software-2004 - apache-userdir - wireshark - gns3 - dotnet - kvm - lxd-zfs - convidat - apagado-1455 - apagado-2130 tasks: # Usuarios #- include: users/informatica/smx2a.yml #- include: users/informatica/smx2b.yml #- include: users/informatica/smx2c.yml
El orden de los roles transmite cierta orientación sobre el estado de las máquinas:
- Cuando la máquina está recién instalada con la imagen de instalación desatendida sobre OpenZFS se puede ver el usuario '
usuariinstall
' en GDM. - El primer rol del playbook borra el usuario por defecto. Así que tan pronto como se lanza el playbook desaparece de la pantalla el usuario 'usuariinstall' de aquellos ordenadores en los que Ansible ha empezado a trabajar.
- Finalmente, en los últimos roles, se define el usuario '
convidat
' de manera cuando el usuario aparece en GDM se tiene la indicación de que prácticamente se ha completado la ejecución del playbook. - Los dos últimos roles, que no llevan demasiado tiempo, se dedican a configurar el apagado automático de los ordenadores a las 14:55 y a las 21:30.
Instalación de software
La mayoría de las tareas se completan en unos pocos segundos, pero la instalación de software es con diferencia la tarea que más tiempo consume. Aunque, como el resto de tareas, una vez realizada no requiere prácticamente tiempo en las próximas ejecuciones del playbook.
La mayor parte del software que debe formar parte de la base de todos los ordenadores del centro se instala en el rol software-2004
. En este rol hay 4 partes diferenciadas:
- La instalación de herramientas disponibles en paquetes
snap
. - La actualización de algunos paquetes
apt
escogidos:firefox
,net-tools
,vim
. - La ejecución condicionada a un fallo en la tarea anterior de
dpkg --configure -a
para paliar los efectos de una interrupción inesperada durante la instalación de paquetes que haya podido dejar la base de datos deapt
en un estado inconsistente. - La instalación de herramientas disponibles en los repositorios
apt
de la distribución.
Todo este software se instala sobre la base de Ubuntu 20.04 instalado sobre OpenZFS en la que, además de los paquetes instalados por defecto, se ha añadido el servidor openssh
para que Ansible pueda conectar.
La instalación desatendida consume 3.84GiB de disco y gracias a la compresión LZ4 se obtiene un ratio de 1.58 en el dataset rpool/ROOT
.
root@ubuntu2004:~# zfs get compressratio rpool/ROOT NAME PROPERTY VALUE SOURCE rpool/ROOT compressratio 1.58x - root@ubuntu2004:~#
Instalación de herramientas disponibles en paquetes snap
Los paquete snap
pueden complementar el software instalado con apt
. Las principales características de este formato son:
- De la misma forma que hacen Flatpak y AppImage cada aplicación está empaquetada en un único fichero (con sus dependencias) que puede ser instalado en las principales distribuciones de GNU/Linux.
- Los paquetes
snap
se actualizan de manera automática. De hecho no es posible (sin entrar en opciones de desarrollo) bloquear su actualización, cada vez que se publica una nueva versión las máquinas que lo tengan el paquete instalado descargarán la nueva versión. - Cada paquete es una imagen
squashfs
que se monta mediante un dispositivoloop
. Así las instalaciones y actualizaciones son transacciones que no provocan ningún error en el caso de interrumpirse.
Si bien este formato tiene unas características técnicas interesantes y además abre la puerta a las aplicaciones disponibles en su repositorio también tiene un pero muy feo: canonical se reserva el control de la tienda de aplicaciones y repositorio. Salvo opciones de desarrollo no es posible indicar el repositorio del que se descargarán los paquetes, se descargarán de la tienda de aplicaciones controlada por Canonical. Y no es posible montar repositorios alternativos, si se quiere publicar una nueva aplicación en formato snap
debe publicarse en la tienda oficial.
En el centro se instalarán en formato snap
todas aquellas aplicaciones que estén empaquetadas por un autor verificado.
Los snaps instalados son:
root@ubuntu2004:/var/snap# ls atom gnome-3-34-1804 kde-frameworks-5-qt-5-14-core18 obs-studio blender godot-3-1 kdenlive octave bluej godot-bare kig pdfmixtool brackets godot-runtime kmplot pdftk chromium gtk2-common-themes kotlin qalculate code gtk-common-themes krita ruby core inkscape ktouch shotcut core18 intellij-idea-educational librepcb snapd darktable jupyter lxd snap-store dotnet-sdk kalgebra musescore sweethome3d-homedesign eclipse kbruch netbeans syncthing gimp kcalc node vlc gnome-3-28-1804 kde-frameworks-5-core18 node-red root@ubuntu2004:/var/snap#
Cuando se instalan el espacio consumido en disco sube hasta los 10.3GiB.
Instalación de herramientas disponibles en los repositorios apt
Los paquetes .deb
instalados con apt
siguen formando el grueso del software instalado.
Se solicita la instalación de los paquetes: audacity default-jdk dia dia-rib-network dia-shapes dia2code dialog docutils-doc filezilla freecad fritzing git gnome-boxes golang-go httpie ipcalc kicad kicad-doc-es korganizer librecad libreoffice-base libreoffice-report-builder lyx ncdu openshot pgadmin3 planner prometheus-node-exporter pylint pylint3 python3-docutils python3-pip python3-pylint-django python3-pypdf2 recordmydesktop relational rst2pdf scratch slic3r texlive-lang-spanish tree tshark ttf-mscorefonts-installer unrar virt-top virtualbox virtualenv vpcs xorriso.
Cuando se resuelven las dependencias se llega al millar de paquetes nuevos para instalar que, una vez instalados, llevan el espacio consumido en disco hasta los 15GiB.
Así que cuando se instala un aula con más de 20 ordenadores se genera mucho tráfico en la red como muestra esta interfaz del gateway de un aula:
Otro software instalado
Aún quedan algunos roles que instalan aplicaciones al margen de software-2004
. Estos otros roles existen por si resulta conveniente no instalar estas aplicaciones en algunos ordenadores del centro.
Estos roles son:
Instala el servidor web Apache y PHP. Activa en Apache el módulo userdir
para que los usuarios puedan publicar su propia web en ~/public_html
.
Instala el analizador de protocolos de red Wireshark.
Instala el emulador de redes GNS3, la única aplicación que ha requerido añadir un repositorio PPA propio.
Instala dotnet-sdk
y modifica /etc/profile.d/04-fix-dotnet.sh
para que vscode
pueda compilar.
Instala kvm
, libvirt
y virt-manager
y activa la virtualización anidada. La configuración por defecto de libvirt
crea el puente virbr0
con la IP 192.168.122.1/24
al que pertenecerán las interfaces de las MVs.
Instala y configura LXD. En este caso se deja configurado para que utilice ZFS como pool de almacenamiento y el puente lxdbr0
para las interfaces de red de los contenedores.