Actualización de versión¶
En esta entrada vamos a explicar cómo cambiar la IP de un servidor Zentyal.
Tabla de contenidos
Consideraciones¶
La actualización a Zentyal 8.0 se debe realizar desde un Zentyal 7.1 totalmente actualizado. Las versiones anteriores a 7.1 se deberán actualizar progresivamente. La sucesión completa de actualizaciones desde la versión Zentyal 3.2 es la siguiente:
3.2 -> 4.x -> 5.x -> 6.0 -> 6.1 -> 6.2 -> 7.0 -> 7.1 -> 8.0
Advertencia
Estas instrucciones son válidas para actualizar la versión 7.1 de la Edición Development a la version 8.0 de la Edición Development. Para ediciones comerciales, debemos ponernos en contacto con el Equipo de Soporte. Si no tenemos acceso al Portal de Soporte [1] debemos contactar al Equipo de Zentyal [2] para solicitar acceso.
[1] | Portal de soporte: https://zentyal.atlassian.net/servicedesk/customer/portal/4/ |
[2] | Contacto: https://zentyal.com/es/contactanos/ |
Antes de comenzar con la actualización, recomendamos encarecidamente realizar una serie de comprobaciones previas para tratar de minimizar posibles incidencias. Dichas comprobaciones se detallan en la siguiente sección.
Adicionalmente, es de vital importancia disponer de un backup del servidor antes de proceder con la actualización. La actualización es un proceso complejo y puede fallar dejando el sistema dañado o, incluso, irrecuperable.
Advertencia
Recordad que una backup de configuración no es una copia de seguridad completa tal y como se detalla aquí [3].
[3] | Backup de configuración: https://doc.zentyal.org/es/backup-conf.html |
Comprobaciones previas¶
A continuación se indican las acciones a comprobar previas a la actualización.
Versión del paquete zentyal-core¶
Para poder actualizar el servidor Zentyal a la versión 8.0 necesitaremos tener instalada la versión 7.1.1 o superior del paquete zentyal-core:
dpkg -l zentyal-core
Errores en los logs¶
Una de las tareas más importantes es confirmar que en los archivos de log más críticos del sistema no haya errores. Los archivos que deberemos revisar como mínimo serán:
/var/log/zentyal/zentyal.log
/var/log/syslog
Espacio en disco¶
Al ser una actualizar major, el tamaño en disco necesario mínimo es de 3 GB para la partición / y 250 MB para la partición /boot
df -h
Acceso a Internet¶
Para poder descargar los paquetes necesarios para realizar la actualización es necesario que el servidor tenga acceso a Internet:
ping -c5 google.com
Acceso a los repositorios¶
Otra de las tareas críticas a revisar es el acceso a los repositorios de Ubuntu y Zentyal. Para ello, bastará con ejecutar el siguiente comando para confirmar que no hay errores:
sudo apt update
Paquetes disponibles¶
Para revisar si el sistema operativo está actualizado, tendremos que ejecutar los siguientes comandos:
sudo apt update
sudo apt list --upgradable
Paquetes rotos¶
Es imperativo que revisemos que no haya ningún paquete roto, de lo contrario, la actualización nos fallará.
dpkg -l | egrep -v '^(ii|rc)'
En caso de haber paquetes en mal estado, en la sección de Troubleshooting [4] se explica como tratar de repararlos.
[4] | Troubleshooting: https://doc.zentyal.org/es/upgrade.html#id15 |
Errores en las bases de datos¶
Otra tarea importante a revisar si hay algún error en las bases de datos alojadas en MySQL que usa Zentyal para sus módulos:
mysqlcheck -u root -p$(sudo cat /var/lib/zentyal/conf/zentyal-mysql.passwd) --all-databases 2> /dev/null
En caso de usar el módulo controlador de dominio [5], también es altamente recomendable confirmar su estado:
sudo samba-tool dbcheck --cross-ncs
En caso de detectar un error en esta última base de datos, tendremos que seguir [6] este enlace.
[5] | Controlador de dominio: https://doc.zentyal.org/es/directory.html |
[6] | Documentación sobre la base de datos de Samba: https://wiki.samba.org/index.php/Dbcheck |
Intefaces virtuales¶
La funcionalidad de interfaces virtuales está deprecated en Zentyal 8.0, por lo que antes de proceder con la actualización es importante revisar que no haya ninguna interfaz de red configurada con dicha funcionalidad.
Reporte del sistema¶
Podemos obtener los resultados de las comprobaciones mencionadas en este apartado y muchas más información generando un reporte del sistema [7] y analizándolo antes de programar la actualización del servidor.
[7] | Reporte del sistema: https://doc.zentyal.org/es/smart-admin.html#informe-del-estado-del-sistema |
Actualización¶
Una vez que hayamos revisado el sistema y confirmado su estabilidad, podremos proceder a su actualización. Tenemos dos formas de hacerlo:
1. Desde el botón disponible en el Dashboard de la Interfaz de Administración de Zentyal.
Advertencia
Si el servidor no tiene conexión a Internet, no se mostrará el botón.
Una vez iniciado el upgrade, podremos ver el proceso en una ventana modal y en el archivo de log /var/log/zentyal/upgrade.log
.
Cuando la actualización haya terminado, deberíamos de ver un mensaje de éxito o fracaso.
Advertencia
Si no obtenemos ninguno de esos mensajes, es posible que la sesión del navegador web haya expirado, por lo que
tendremos que revisar el archivo de log /var/log/zentyal/zentyal.log
. Si la actualización ha terminado,
simplemente tendremos que refrescar la página.
2. Desde la línea de comandos (opción recomendable):
sudo bash /usr/share/zentyal/release-upgrade
# Con debug:
sudo bash -x /usr/share/zentyal/release-upgrade
Advertencia
La terminal desde donde se esté ejecutando el comando no podrá cerrarse hasta que el proceso haya terminado.
Truco
Una buena práctica es almacenar en un archivo de texto el output generado por el script por si fuera necesario analizarlo con detenimiento.
Comprobaciones posteriores¶
Una vez que la actualización haya terminado, tendremos que revisar lo siguiente antes de reiniciar el servidor:
1. La versión de Ubuntu es 22.04:
lsb_release -a
2. Los paquetes de Zentyal se han actualizado a 8.0:
dpkg -l | egrep 'zen(tyal|buntu)-'
3. No hay paquetes rotos:
dpkg -l | egrep -v '^(ii|rc)'
4. El servicio networking está deshabilitado:
systemctl is-enabled networking
# En caso de estar habilitado todavía
sudo systemctl disable networking
5. El antiguo archivo de configuración de red /etc/network/interfaces
ya no existe:
sudo rm -f /etc/network/interfaces
6. Los siguientes servicios están deshabilitados y parados:
sudo systemctl status resolvconf named-resolvconf
# En caso de estar habilitados o ejecutándose todavía
sudo systemctl disable --now resolvconf named-resolvconf
7. Si todo lo anterior es correcto, podremos proceder a reiniciar el servidor.
8. Una vez que haya iniciado el servidor, debemos analizar los siguientes archivos de logs para confirmar que no se han producido errores:
/var/log/zentyal/zentyal.log
/var/log/syslog
9 Finalmente comprobaremos el funcionamiento de cada módulo para cerciorarnos de la estabilidad del mismo tras la actualización.
Troubleshooting¶
En caso de que la actualización haya fallado, deberemos de identificar el punto en el que se encuentra el servidor antes de considerar restaurar la copia de seguridad realizada antes de la actualización.
Estado actual del servidor¶
Para confirmar el estado del servidor tras el fallo durante la actualización, primero deberemos
revisar el archivo de log /var/log/zentyal/upgrade.log
. Después, podremos hacernos las
siguientes preguntas para determinar si tenemos que restaurar una copia de seguridad.
- 1. ¿La versión de Ubuntu sigue siendo 20.04 y los paquetes de Zentyal son 7.1?
- Si la respuesta es afirmativa y no hay paquetes rotos, no será necesario restaurar la copia de seguridad.
- 2. ¿Se actualizó la versión de Ubuntu a una diferente de 22.04?
- Si la respuesta es afirmativa, habrá que restaurar una copia de seguridad, ya que Zentyal 8.0 se basa en Ubuntu 22.04.
- 3. ¿Se llegó a actualizar algún paquete de Zentyal?
- Si ningún paquete llegó a actualizarse pero Ubuntu se se actualizó a 22.04, podremos analizar el archivo de
log
/var/log/zentyal/upgrade.log
y ejecutar el script de actualización de nuevo para tratar de actualizar Zentyal. - 4. ¿Se actualizaron los paquetes de Zentyal a una versión distinta de 8.0?
- En caso afirmativo, habrá que restaurar la copia de seguridad.
- 5. ¿Hay paquetes rotos?
- Si Ubuntu y Zentyal se actualizaron pero hay paquetes rotos, podremos tratar de solucionarlos sin necesidad de restaurar una copia de seguridad.
Paquetes rotos¶
Si tenemos paquetes rotos, podremos tratar de solucionarlos con los siguientes comandos.
Para solucionar todos los paquetes a la vez:
sudo dpkg --configure --force-confdef -a
Advertencia
Posiblemente sea necesario ejecutar el comando varias veces.
En caso de que no haya funcionado, habrá que hacerlo de paquete en paquete:
sudo dpkg --configure --force-confdef nombre_del_paquete
Base de datos MySQL¶
Si tenemos errores en el archivo de log /var/log/zentyal/zentyal.log
con el servicio mysql como el siguiente:
2024/04/26 11:04:02 ERROR> MyDBEngine.pm:200 EBox::MyDBEngine::_connect - Connection DB Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
at Connection DB Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
at /usr/share/perl5/EBox/MyDBEngine.pm line 200
Y el servicio está parado:
sudo systemctl status mysql
Tendremos que comprobar si el directorio /var/log/mysql/
existe, en caso de que no exista:
sudo mkdir -v -m 0750 /var/log/mysql
sudo chown -R mysql:adm /var/log/mysqll
En caso de que exista, tendremos que ejecutar los siguientes comandos:
sudo chown -R mysql:adm /var/log/mysql
sudo chmod -R 0750 /var/log/mysql
Finalmente, reiniciamos el servicio. En caso de que el error persista, habrá que analizar los archivos de log /var/log/syslog
y /var/log/mysql/error.log
:
sudo systemctl restart mysql
sudo systemctl status mysql
Módulo de antivirus¶
Tras actualizar a Zentyal 8.0, si el módulo de Antivirus nos sale como STOPPED y en el log /var/log/clamav/clamav.log
vemos el siguiente mensaje:
ERROR: LOCAL: Socket file /var/run/clamav/clamd.ctl could not be bound: Permission denied
Lo que tenemos que hacer es modificar el propietario del directorio /var/run/clamav/
y posteriormente, reconfigurar el paquete, para ello, ejecutaremos los siguientes comandos:
sudo -i
chown clamav:clamav /var/run/clamav/
echo "clamav-daemon clamav-daemon/debconf boolean false" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure clamav-daemon
Una vez que tenemos el paquete reconfigurado, ya sólo nos quedará reiniciar el módulo:
sudo zs antivirus restart