Actualización de versión

Antes de la actualización

La actualización a Zentyal 7.0 se debe realizar desde un Zentyal 6.2 totalmente actualizado. Las versiones anteriores a 6.2 se deberán actualizar progresivamente a través de cada una de las “major releases”. 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

Advertencia

Estas instrucciones son válidas para actualizar la versión 6.2 de la Edición Development a la version 7.0 de la Edición Development. Para actualizar una Edición Comercial a una versión superior, 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, debemos que comprobar los siguientes puntos:

  • Que no hay errores en los archivos de log /var/log/zentyal/zentyal.log y /var/log/syslog.
  • Que hay espacio disponible en el disco.
  • Que el servidor está actualizado.
  • Que no hay paquetes rotos.
  • Que no hay errores en la base de datos de Samba ni en las bases de datos de MySQL.
  • Que hay acceso a la Internet.

Advertencia

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.

Opciones de actualización

Una vez que el sistema ha sido revisado y se ha confirmado que es estable, podremos proceder a su actualización. Tenemos dos vías para realizar la actualización:

1. Desde el botón disponible en el Dashboard de la Interfaz de Administración de Zentyal.

Botón de la actualización

Botón de la actualización

Advertencia

Si el servidor no tiene conexión a Internet, no se mostrará el botón.

2. Desde la línea de comandos (opción recomendable para detectar errores en el proceso):

sudo /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.

Tras la actualización

Una vez que la actualización haya terminado, habrá que revisar lo siguiente antes de reiniciar el servidor:

1. Que Ubuntu haya sido actualizado a 20.04:

lsb_release -a

2. Que los paquetes de Zentyal se hayan actualizado a 7.0:

dpkg -l | grep 'zentyal-'

3. Que no haya paquetes rotos:

dpkg -l | egrep -v '^ii|rc'

A continuación, podremos reiniciar el servidor y realizar las siguientes comprobaciones:

4. Revisaremos si los archivos de log /var/log/zentyal/zentyal.log y /var/log/syslog contienen errores tras el reinicio.

Truco

Cuando la actualización termina con éxito, añadimos un registro identificador en ambos archivos de log para que podamos analizarlos a partir de allí.

5. Si el servidor está configurado como Controlador de dominio adicional, tendremos que realizar la siguiente comprobación:

5.1. Revisaremos que el usuario especial dns-$HOSTNAME está en el grupo DnsAdmins:

sudo samba-tool group listmembers DnsAdmins

5.1.1 En caso de no pertecer a dicho grupo, habrá que ejecutar los siguientes comandos:

sudo samba-tool group addmembers DnsAdmins dns-$HOSTNAME
sudo zs dns restart

6 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 de restaurar una copia de seguridad.

1. Revisaremos si el sistema operativo (Ubuntu) se ha actualizado a 20.04:

lsb_release -a

2. Revisaremos si los módulos de Zentyal fueron actualizados a 7.0:

dpkg -l | grep 'zentyal-'

3. Revisaremos si tenemos paquetes rotos:

dpkg -l | egrep -v '^ii|rc'

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 -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 nombre_del_paquete

Advertencia

Posiblemente tengamos que hacer varias pasadas hasta solucionar todos los paquetes.

Si finalmente se consigueron solucionar los problemas, tendremos que determinar si el sistema operativo (Ubuntu) ya está en 20.04 y si los módulos de Zentyal están en 7.0. Necesitamos conocer esta información para determinar los comandos dentro de las funciones que faltaron por ser ejecutados en el script [3].

Truco

Las funciones a analizar son: upgrade_ubuntu, upgrade_zentyal y finishUpgrade.

Advertencia

Antes de ejecutar cualquier de las funciones, tenemos que asegurarnos de que el script no haya cambiado durante el proceso de actualización.

[3]Script de actualización: https://github.com/zentyal/zentyal/blob/support/6.2/main/core/src/scripts/release-upgrade

Certificado de la Interfaz de Administración de Zentyal

Si tras la actualización no nos funciona la Interfaz de Administración de Zentyal, posiblemente la causa sea que el certificado fue generado usando 1024 bits. Podemos revisarlo de la siguiente forma:

sudo openssl x509 -text -in /var/lib/zentyal/conf/ssl/ssl.pem | grep 'bit'

En caso de que efectivamente, este sea el problema, tendremos que ejecutar los siguientes comandos:

sudo rm -rf /var/lib/zentyal/conf/ssl/
sudo /usr/share/zentyal/create-certificate /var/lib/zentyal/conf/ssl \
  `hostname --fqdn`

Para otros casos, tendremos que revisar los archivos de log: /var/log/zentyal/zentyal.log y /var/log/nginx/error.log.

Iptables

En caso de obtener el siguiente error:

/sbin/iptables: not found

Simplemente tendremos que ejecutar el siguiente comando:

sudo ln -s /usr/sbin/iptables /sbin/iptables

Shell

Si obtenemos el siguiente error:

Invalid value for Default login shell: /usr/bin/bash.

Tendremos que ejecutar el siguiente comando:

sudo ln -s /bin/bash /usr/bin/bash

Además, tendremos que revisar si existe la shell en el archivo de configuración /etc/shells, de no ser así, tendremos que añadirlo al archivo y ejecutar posteriormente el siguiente comando:

sudo chsh -s /usr/bin/bash

DNS

Las incidencias que puedan surgirnos al usar los módulos de Servicio de resolución de nombres de dominio (DNS) y Servicio de Dominio y Directorio pueden ser variadas, por lo que será de especial importancia localizar la incidencia en nuestro sistema, para ello, tendremos que revisar al menos lo siguiente:

  • Los archivos de logs: /var/log/zentyal/zentyal.log y /var/log/syslog.

  • El estado del servicio:

    sudo journalctl -u named
    
  • El estado de la actualización de los registros DNS:

    sudo samba_dnsupdate --verbose --all-names
    
  • La pertenencia del usuario DNS especial al grupo DnsAdmins:

    sudo samba-tool group listmembers DnsAdmins
    
  • La existencia de los registros DNS esenciales [4].

[4]Registro DNS: https://wiki.samba.org/index.php/Verifying_and_Creating_a_DC_DNS_Record