Importación de datos de configuración

Aunque la interfaz de Zentyal facilita enormemente la labor del administrador de sistemas, algunas de las tareas de configuración a través de dicha interfaz pueden resultar tediosas si tenemos que repetirlas muchas veces. Ejemplos de esto serí­an añadir 100 nuevas cuentas de usuario o habilitar una cuenta de correo electrónico para todos los usuarios de Zentyal.

Estas tareas se pueden automatizar fácilmente a través de la interfaz de programación de aplicaciones (API) que nos proporciona Zentyal. Para ello sólo son necesarios unos conocimientos básicos de lenguaje Perl [1], así­ como conocer los métodos expuestos por el módulo de Zentyal que queramos utilizar. De hecho, la interfaz Web utiliza la misma interfaz de programación.

[1]Perl es un lenguaje dinámico de programación interpretado de alto nivel y de propósito general. http://www.perl.org/

A continuación se muestra un ejemplo de cómo crear una pequeña utilidad, haciendo uso del API de Zentyal, para añadir automáticamente un número arbitrario de usuarios definidos en un fichero CSV (Comma Separated Values):

#!/usr/bin/perl

use strict;
use warnings;

use EBox;
use EBox::Global;

EBox::init();
my $usersModule = EBox::Global->modInstance('users');

my @users;
open (my $USERS, 'users');

while (my $line = <$USERS>) {
    chomp ($line);
    my $user;
    my ($username, $givenname, $surname, $password) = split(',', $line);
    $user->{'user'} = $username;
    $user->{'givenname'} = $givenname;
    $user->{'surname'} = $surname;
    $user->{'password'} = $password;
    push (@users, $user);
}
close ($USERS);

foreach my $user (@users) {
    $usersModule->addUser($user, 0);
}

1;

Guardamos el fichero con el nombre bulkusers y le damos permisos de ejecución mediante el comando chmod +x bulkusers.

Antes de ejecutar el script debemos tener un fichero llamado users en el mismo directorio. El aspecto de este fichero debe ser así­:

jfoo,John,Foo,jfoopassword,
jbar,Jack,Bar,jbarpassword,

Finalmente nos situamos en el directorio donde lo hayamos guardado y ejecutamos:

sudo ./bulkusers

En esta sección se ha mostrado un pequeño ejemplo de las posibilidades de automatización de tareas con el API de Zentyal, pero estas son prácticamente ilimitadas.

Personalización avanzada de servicios

En esta sección se comentan dos posibilidades de personalización del sistema para aquellos usuarios que puedan tener necesidades especiales.

  • Personalización de ficheros de configuración de servicios gestionados por Zentyal.
  • Ejecución de acciones en el proceso de asentar cambios en la configuración.

Cuando un módulo de Zentyal se encarga de configurar automáticamente un servicio intenta abarcar sus opciones de configuración más comunes. Además, en algunos casos son tantas las posibilidades de configuración que nos ofrecen las herramientas de software libre, que aunque se quisiese serí­a imposible controlarlas todas con un producto como Zentyal cuyo fin es la simplicidad. Sin embargo, hay usuarios que pueden tener necesidades especiales y desean ajustar alguno de estos parámetros que Zentyal no maneja. Una de las posibilidades es modificando directamente los ficheros de configuración del software en cuestión.

Antes de lanzarnos a modificar un fichero de configuración manualmente, debemos comprender cómo funciona Zentyal internamente. Los módulos, una vez que se han habilitado, se encargan de sobreescribir los ficheros de configuración originales del sistema de aquellos servicios que controlan. Esto lo hacen mediante unas plantillas que contienen fundamentalmente la estructura básica de un fichero de configuración tí­pico para el servicio en cuestión, pero algunas de las partes están parametrizadas mediante variables de sustitución. El valor de estas variables se asigna a la hora de escribir el fichero, en función de los valores de configuración que hayamos establecido a través de la interfaz de Zentyal. Puede quedar más claro con la siguiente imagen:

Cómo funciona el sistema de plantillas de configuración

Cómo funciona el sistema de plantillas de configuración

Por tanto, si queremos que los cambios que realicemos sobre los ficheros de configuración sean persistentes, y no sean sobrescritos cada vez que Zentyal salve cambios, debemos editar las anteriormente mencionadas plantillas en lugar de los ficheros. Estas plantillas se encuentran en /usr/share/zentyal/stubs, distribuidas en directorios para cada módulo y su nombre coincide con el nombre del fichero de configuración original seguido de la extensión .mas.

Hay que tener en cuenta, que aunque estos cambios que realicemos en las plantillas serán persistentes pese a que se modifique la configuración de Zentyal; dejarán de serlo en el momento en que realicemos una actualización del módulo al que pertenece la plantilla, al instalar una nueva versión se sobreescribirán todos los ficheros .mas. Si queremos que estos cambios se mantengan al actualizar el módulo, deberemos copiar la plantilla a /etc/zentyal/stubs/ dentro de un directorio con el nombre del módulo. Así­ si por ejemplo queremos modificar la plantilla /usr/share/zentyal/stubs/dns/named.conf.options.mas, crearemos el directorio /etc/zentyal/stubs/dns/, copiaremos la plantilla ahí­ dentro y será esta copia la que modificaremos:

sudo mkdir /etc/zentyal/stubs/dns
sudo cp /usr/share/zentyal/stubs/dns/named.conf.options.mas /etc/zentyal/stubs/dns

Otra de las ventajas de copiar las plantillas a /etc/zentyal/stubs/ es que podemos mantener un control de las modificaciones que hemos efectuado sobre las plantillas originales de Zentyal, y siempre podremos ver estas diferencias utilizando la herramienta diff, por ejemplo para el caso anterior:

diff /etc/zentyal/stubs/dns/named.conf.options.mas /usr/share/zentyal/stubs/dns/named.conf.options.mas /etc/zentyal/stubs/dns

Es posible que en lugar de personalizar ficheros de configuración, lo que necesitemos sea ejecutar ciertas acciones adicionales además de las que ejecuta Zentyal cuando guarda los cambios en sus módulos.

Por ejemplo, cuando Zentyal guarda los cambios relativos al cortafuegos, lo primero que hace es eliminar todas las reglas existentes, y posteriormente añade las que tengamos definidas en la configuración. Si tenemos unas necesidades avanzadas que nos llevan a añadir una regla de iptables que no está contemplada en la interfaz de Zentyal, y la añadimos manualmente, en el momento en que el módulo se reinicie la regla desaparecerá. Para evitar esto, Zentyal nos permite ejecutar scripts durante el proceso de aplicación de los cambios en la configuración de los servicios. Existen 6 puntos de entrada para la ejecución de dichos scripts también conocidos como hooks. Dos de ellos son generales y los otros cuatro por módulo:

Antes de guardar cambios:
Los scripts con permisos de ejecución situados en el directorio /etc/zentyal/pre-save se ejecutarán antes de comenzar el proceso.
Después de guardar cambios:
Se ejecutarán los scripts con permisos de ejecución del directorio /etc/zentyal/post-save cuando el proceso haya finalizado.
Antes de guardar la configuración de un módulo:
Escribiendo el fichero /etc/zentyal/hooks/<module>.presetconf siendo <module> el nombre del módulo que se quiere personalizar. Se ejecutará antes de sobreescribir la configuración del módulo. Es el sitio ideal para modificar las plantillas de configuración de un módulo.
Después de guardar la configuración de un módulo:
El fichero /etc/zentyal/hooks/<module>.postsetconf se ejecutará tras guardar la configuración.
Antes de reiniciar el servicio:
Se ejecutará el fichero /etc/zentyal/hooks/<module>.preservice. Este script puede ser útil, por ejemplo, para cargar módulos en el demonio de apache.
Después de reiniciar el servicio:
Se ejecutará el fichero /etc/zentyal/hooks/<module>.postservice. Para el ejemplo del cortafuegos, se deberí­an escribir aquí­ las reglas personalizadas necesarias que no puedan ser añadidas desde la interfaz de Zentyal.

Como se puede intuir, esto tiene un gran potencial y permite una personalización muy avanzada del funcionamiento y la integración de un servidor Zentyal.

Entorno de desarrollo de nuevos módulos

Zentyal está diseñado precisamente pensando en la extensibilidad y es relativamente sencillo crear nuevos módulos.

Cualquiera con conocimientos del lenguaje Perl puede aprovecharse de las facilidades que proporciona Zentyal para la creación de interfaces Web, y también beneficiarse de la integración con el resto de módulos y las demás caracterí­sticas comunes de Zentyal.

El diseño de Zentyal es completamente orientado a objetos y hace uso del patrón Modelo-Vista-Controlador (MVC) [2], de forma que el desarrollador sólo necesita definir qué caracterí­sticas desea en su modelo de datos, y el resto será generado automáticamente por Zentyal. Por si esto no fuese suficiente, se dispone de una herramienta llamada zmoddev [3] que facilita más todaví­a el desarrollo de nuevos módulos, proporcionando plantillas auto-generadas en función de parámetros definidos por el usuario, lo que se traduce en un ahorro de tiempo. Sin embargo, su explicación y desarrollo está fuera del alcance de esta documentación.

[2]Una explicación más amplia del patrón MVC http://es.wikipedia.org/wiki/Modelo_Vista_Controlador.
[3]Acceso al repositorio de zmoddev https://svn.zentyal.org/zentyal/trunk/extra/zmoddev.

Zentyal está pensado para ser instalado en una máquina dedicada. Esta recomendación es también extensible para el caso del desarrollo de módulos. No se recomienda desarrollar sobre la propia máquina del usuario, en su lugar se recomienda servirse de un entorno virtualizado como se detalla en Apéndice A: Entorno de pruebas con VirtualBox.

Política de publicación de versiones

La publicación de versiones del servidor Zentyal sigue un ciclo temporal establecido: se publica una versión estable de Zentyal una vez al año, en septiembre. El Equipo de Desarrollo de Zentyal ha optado por esta modalidad por que simplifica, tanto para los usuarios como para los desarrolladores, la toma de decisiones a largo plazo referentes al desarrollo, despliegue y mantenimiento de los servidores. Así mismo, facilita al Equipo de Desarrollo la labor de proporcionar software correctamente probado y de calidad.

Es importante saber que todas las versiones de Zentyal están basadas en versiones LTS de Ubuntu server. Cada versión de Zentyal está basada en la última version de Ubuntu LTS disponible en el momento de su lanzamiento.

Ciclo de versiones de Zentyal

El Equipo de Desarrollo entregará tres tipos de versiones de Zentyal durante el ciclo: versiones Beta, versiones Candidatas y versiones Estables. Las versiones Estables serán soportadas durante tres años, tras los cuales llegarán a su “final de vida” y dejarán de soportarse.

  • Versiones Beta de Zentyal *

Las versiones Beta de Zentyal son publicaciones inestables que están disponibles desde septiembre hasta junio. Estas versiones Beta incluyen nuevas funcionalidades que no han sido extensivamente comprobadas en busca de errores. Como el Equipo de Desarrollo de Zentyal sigue la filosofía “release early, release often” (entrega temprano, entrega a menudo), puede llegar a haber una gran cantidad de versiones Beta publicadas en este período de tiempo.

Las versiones Beta siempre tienen un primer decimal impar: 1.1, 1.3, 1.5, 2.1, 2.3...

Como las versiones Beta eventualmente evolucionarán hacia versiones Estables, podemos observar que la serie 2.1 siguió este patrón: 2.1.1, 2.1.2, 2.1.3, .... 2.1.10, 2.1.11, 2.1.x -> 2.2

De lo que se deduce que la serie 2.3 seguirá este patrón similar: 2.3.1, 2.3.2, 2.3.3, .... 2.3.10, 2.3.11, 2.3.x -> 3.0

  • Versiones Candidatas de Zentyal *

Las versiones Candidatas de Zentyal son publicadas de julio a septiembre, durante el periodo de tres meses de estabilización. Habrá tantas versiones Candidatas como el Equipo de Desarrollo estime necesario para estabilizar el nuevo código y reparar los errores antes de publicar la nueva versión estable.

Las versiones Candidatas siempre tienen el número de la siguiente versión Estable, con el sufijo “rc” para indicar que no es todavía la versión Estable. La primera versión Candidata, llevará el sufijo “rc1”, “rc2” para la segunda y así sucesivamente: 3.0-rc1, 3.0-rc2, 3.0-rc3...

  • Versiones Estables de Zentyal *

Las versiones Estables de Zentyal son publicadas una vez al año, en septiembre. Las versiones Estables siempre tienen un primer decimal par: 1.0, 1.2, 1.4, 2.0, 2.2, 3.0... El primer número de la versión se aumenta cada vez que el sistema base, Ubuntu server, es actualizado.

Por ejemplo, las versiones 1.0, 1.2 y 1.4 están basadas en Ubuntu 8.04 LTS, 2.0 y 2.2 están basadas en Ubuntu 10.04 LTS y la versión 3.0 se basará en Ubuntu 12.04 LTS.

Calendario

  • Junio: El periodo de desarrollo de Zentyal se congela. Empieza el periodo de estabilización de tres meses. Las versiones Candidatas necesarias se publican durante este periodo.
  • Septiembre: Se publica la versión Estable de Zentyal.
  • Octubre - Junio: Continua el desarrollo de Zentyal. Las versiones Beta necesarias son publicadas durante este periodo.

Política de soporte

El Equipo de Desarrollo de Zentyal ofrece tres años de soporte para las versiones estables de Zentyal. Esto significa que, desde la publicación de una versión estable, se garantiza el soporte para los problemas de seguridad y los servicios de soporte y suscripción comerciales durante tres años. Después de este periodo, la versión Estable llega al “final de vida” y deja de estar soportada.

Política de gestión de errores

Cada proyecto de software libre tiene su propia polí­tica de gestión de defectos, denominados bugs en el argot informático. Como se mencionó anteriormente, las versiones estables están soportadas durante tres años y durante este tiempo se garantiza soporte para todos los problemas de seguridad. Además, sobre esta versión se pueden ir incorporando progresivamente modificaciones que corrigen los distintos bugs detectados. Se recomienda utilizar siempre la última versión de Zentyal, ya que incorpora todas las mejoras y correcciones.

En Zentyal se utiliza la herramienta de gestión de proyectos Trac [4]. Es usada por los desarrolladores para gestionar los bugs y sus tareas, pero también la creación de tickets para reportar problemas está abierta a todos los usuarios. Una vez que el usuario ha creado un ticket, puede realizar un seguimiento del estado del mismo mediante correo electrónico. Se puede acceder al Trac de Zentyal desde http://trac.zentyal.org/.

[4]Trac: es una herramienta para la gestión de proyectos y el seguimiento de errores http://trac.edgewall.org/.

Se recomienda reportar un bug cuando nos hemos asegurado que realmente se trata de un error y no de un resultado esperado del programa en determinadas circunstancias.

Para enviar un bug, deberemos comprobar en primer lugar usando el propio Trac que no ha sido enviado anteriormente. Podemos enviarlo directamente a través de la interfaz web de Zentyal o manualmente usando el rastreador de bugs de Zentyal. Si el bug ha sido enviado anteriormente, todavía puedes ayudar confirmando que lo has reproducido y aportando detalles adicionales sobre el problema.

Es absolutamente necesario incluir los detalles sobre los pasos para reproducir el error para que el Equipo de Desarrollo puede arreglarlo. Si estás reportando el error manualmente, se debería incluir al menos el fichero /var/log/zentyal/zentyal.log y cualquier otra información que estimes relacionada con la causa de tu problema. Las capturas de pantalla también son bienvenidas si permiten visualizar mejor el problema.

Por último, en el mejor de los casos es posible que puedas proveer una solución al problema. Esto se puede hacer modificando la aplicación en si misma con un parche o siguiendo un conjunto de pasos que esquivan el problema, lo que se conoce como workaround.

Parches y actualizaciones de seguridad

Entendemos por parche una modificación en el código fuente que permite solucionar un bug o añadir una nueva caracterí­stica al software. En los proyectos libres, los miembros de la comunidad tienen la posibilidad de enviar parches a los mantenedores del proyecto y si estos lo ven conveniente, esas modificaciones serán incluidas en la aplicación.

Los propios desarrolladores también suelen publicar parches oficiales que, por ejemplo, corrijan una vulnerabilidad conocida. Pero, tí­picamente, lo que se hace en casos como el de Zentyal, es sacar una nueva versión del paquete en cuestión que incluya el susodicho parche.

Las actualizaciones de seguridad en Zentyal se pueden gestionar a través del módulo de software [5]. Si disponemos de una suscripción comercial para nuestro servidor [6], las actualizaciones de software de calidad serán automáticamente descargadas y aplicadas para garantizar que tu instalación cuenta con la máxima seguridad y estabilidad.

[5]Este módulo se explica con detalle en la sección Actualización de software.
[6]http://www.zentyal.com/services/subscriptions/

Soporte técnico

Tí­picamente, los proyectos de software libre ofrecen soporte técnico a los usuarios de su aplicación a través de distintos medios. Zentyal no es una excepción.

Tenemos que diferenciar dos tipos de soporte: el soporte proporcionado por y para la comunidad, que es gratuito, y el soporte comercial que es aquel que ofrece una empresa a cambio de una retribución económica.

Soporte de la comunidad

El soporte de comunidad se provee principalmente a través de Internet. En muchas ocasiones es la propia comunidad la que se ofrece soporte a sí­ misma. Es decir, usuarios de la aplicación que ayudan desinteresadamente a otros usuarios.

La comunidad proporciona una mejora importante en el desarrollo del producto, los usuarios contribuyen a descubrir fallos en la aplicación que no se conocí­an hasta la fecha o también con sus sugerencias ayudan a dar ideas sobre la forma en que se puede mejorar la aplicación.

Este soporte desinteresado, lógicamente, no está sujeto a ninguna garantí­a. Si un usuario formula una pregunta, es posible que por distintas circunstancias nadie con el conocimiento apropiado tenga tiempo para responderle en el plazo que este desearí­a.

Los medios de soporte de la comunidad de Zentyal se centran en el foro [7], aunque tambien hay listas de correo [8] y canales de IRC [9] disponibles.

[7]http://forum.zentyal.org
[8]http://lists.zentyal.org
[9]servidor irc.freenode.net, canal #Zentyal (inglés) y #Zentyal-es (español).

Toda esta información, junto a otra documentación, se encuentra en la sección de la comunidad de la Web de Zentyal (http://www.zentyal.org/).

Soporte comercial

El soporte comercial permite acceso a soporte como servicio comercial. A diferencia del soporte de comunidad, el soporte comercial sí­ que ofrece garantí­as de servicio como pueden ser:

  • Máximos tiempos de respuesta, en función del paquete de soporte contratado.
  • Soporte por parte de profesionales capacitados, respaldados por los propios desarrolladores.
  • Caracterí­sticas adicionales que dan valor añadido al producto y que no están disponibles para el resto de la comunidad.

Además, el soporte comercial garantiza que los usuarios no se pierden tiempo en decidir qué hardware deberían comprar, qué módulos deberían instalar, cómo realizar la instalación inicial, cómo integrar Zentyal con sistemas existentes, etc. Las ventajas del soporte comercial son evidentes, y generalmente su coste compensa al coste de las horas que se pueden llegar a perder enfrentándose a un problema sin el soporte adecuado. Esta opción es la recomendada, sin duda, para empresas y profesionales del sector que utilicen el software para sistemas en producción.