FacebookTwitterFlickrYoutuberss

Es/5.0/Desarrollo y usos avanzados

From Zentyal Linux Small Business Server
Revision as of 15:52, 18 April 2017 by Admin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Contents

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):

  1. !/usr/bin/perl

use strict; use warnings;

use EBox; use EBox::Samba::User; use File::Slurp;

my @lines = read_file('users.csv'); chomp (@lines);

EBox::init();

my $parent = EBox::Samba::User->defaultContainer();

for my $line (@lines) {

   my ($username, $givenname, $surname, $password) = split(',', $line);
   EBox::Samba::User->create(
       samAccountName => $username,
       parent => $parent,
       givenName => $givenname,
       sn => $surname,
       password => $password
   );

}

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.csv 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 ./bulkusersEn 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

Es posible que necesites extender la funcionalidad de los módulos de Zentyal para adaptarse a tus necesidades. Zentyal ofrece dos mecanismos para este propósito. Es posible cambiar o ampliar partes del comportamiento de tal forma que todavía podemos reutilizar la abstracción y automatización del entorno.

stubs: Plantillas que serán procesadas para generar los ficheros de configuración que usan los daemons. Modificando o creando un stub, podemos cambiar el comportamiento de cualquier módulo, por ejemplo, añadiendo puertos seguros a la configuración de Squid (Proxy HTTP).


Stubs

Los módulos de Zentyal, una vez que han sido configurados, sobreescriben los ficheros originales del sistema en los servicios que gestionan. Los módulos realizan esta operación a partir de plantillas que contienen la estructura básica del fichero de configuración. Ciertas partes del fichero resultante se parametrizan usando las variables que les provee el entorno.

Fichero de configuración desde un stub

Modificar los ficheros de configuración directamente no sería correcto, por que los ficheros serán sobreescritos cada vez que las plantillas sean procesadas (salvando cambios, por ejemplo). Las propias plantillas de configuración de Zentyal residen en /usr/share/zentyal/stubs. Su nombre es el del fichero de configuración original, más la extensión .mas, por ejemplo /usr/share/zentyal/stubs/dns/named.conf.mas. Modificar estas plantillas tampoco sería la mejor solución, por que también se van a sobreescribir si el módulo en cuestión se reinstala o se actualiza.

Por lo tanto, para hacer los cambios persistentes, se puede copiar la plantilla original al directorio /etc/zentyal/stubs/, con el nombre del módulo.

Por ejemplo:

sudo mkdir /etc/zentyal/stubs/dns sudo cp /usr/share/zentyal/stubs/dns/named.conf.options.mas /etc/zentyal/stubs/dnsOtra de las ventajas de copiar las plantillas a /etc/zentyal/stubs/ es que podemos llevar el control de las modificaciones que hemos hecho sobre los originales, usando 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.masPara nuestro siguiente ejemplo, supongamos que no queremos permitir que la red 'DMZ', que es interna, pero no totalmente confiable, realice una transferencia de zona DNS.

Crearemos el directorio /etc/zentyal/stubs/dns y copiaremos los ficheros named.conf.local.mas y named.conf.options.mas.

Añadiremos el grupo 'DMZ' conteniendo los segmentos de red necesarios en el fichero named.conf.local.mas:

acl "DMZ" {

   192.168.200.0/24;
   192.168.201.0/24;

};Ahora prohibimos las transferencias de zona para este objeto en named.conf.options.mas:

allow-transfer { !DMZ; internal-local-nets; };Para comprobar los cambios, reiniciaremos el módulo tras modificar los ficheros:

sudo service zentyal dns restart

Hooks

Es posible que deseemos realizar algunas acciones adicionales en un punto determinado del ciclo de vida de un módulo. Por ejemplo, cuando Zentyal guarda los cambios relacionados con el cortafuegos, lo primero que hace el módulo es eliminar todas las reglas existentes, y después añadir las configuradas en Zentyal. Si añadimos una regla de iptables que no esta contemplada en la interfaz, desaparecerá tras salvar los cambios. Para modificar este comportamiento, Zentyal ofrece la posibilidad de ejecutar scripts durante el proceso de guarda de cambios. Hay seis puntos en los que se pueden ejecutar estos scripts conocidos como hooks. Dos de ellos son generales y los otros cuatro son específicos de cada módulo:

  • Antes de salvar cambios:

En el directorio /etc/zentyal/pre-save, todos los scripts con permisos de ejecución son ejecutados antes del proceso de guarda de cambios.

  • Después de guardar cambios:

Los scripts con permisos de ejecución de /etc/zentyal/post-save son ejecutados tras este proceso.

  • Antes de guardar la configuración de un módulo:

Escribiendo el archivo /etc/zentyal/hooks/<module>.presetconf, con 'module' conteniendo el nombre del módulo a tratar, el hook se ejecutará antes de escribir la configuración de este daemon.

  • Después de salvar la configuración del módulo:

/etc/zentyal/hooks/<module>.postsetconf, se ejecutará tras salvar la configuración del módulo específico.

  • Antes de reiniciar el servicio:

Se ejecutará /etc/zentyal/hooks/<module>.preservice. Podemos utilizarlo para cargar módulos de Apache, por ejemplo

  • Después de reiniciar el servicio:

Se ejecutará /etc/zentyal/hooks/<module>.postservice. Para el caso del cortafuegos, podemos añadir todas las reglas adicionales aquí.


Supongamos que tenemos un proxy transparente, pero deseamos que algunos segmentos de red no sean redirigidos automáticamente al proxy. Crearemos el fichero /etc/zentyal/hooks/firewall.postservice, con el siguiente contenido:

  1. !/bin/bash

iptables -t nat -I premodules -s 192.168.200.0/24 -p tcp -m tcp --dport 80 -j ACCEPTTras ello, daremos permisos de ejecución al módulo y reiniciaremos el servicio:

sudo chmod +x firewall.postservice sudo service zentyal firewall restartEstas opciones tienen gran potencial y nos permitirán adaptar Zentyal a nuestro caso específico.


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.

Existe un turorial de desarrollo (3) para orientar en los primeros pasos del desarrollo de un nuevo módulo.

[2] Una explicación más amplia del patrón MVC

http://es.wikipedia.org/wiki/Modelo_Vista_Controlador.

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 ediciones comerciales de Zentyal

El ciclo de publicación de las ediciones comerciales se extenderá a 24 meses aproximadamente, únicamente se usará como base las versiones LTS de Ubuntu Server disponibles durante el ciclo de desarrollo. Este ciclo se ha diseñado con la intención de hacer coincidir el desarrollo de las versiones comerciales con la disponibilidad de una nueva versión LTS por parte de Ubuntu. Gracias a este cambio, los clientes se beneficiarán de un ciclo de soporte próximo a los 4 años y medio, en lugar del soporte por 3 años ofrecido anteriormente.

Las ediciones comerciales contarán con actualizaciones de seguridad y corrección de errores gracias a los repositorios de calidad garantizada (QA). Utilizando la experiencia y entornos de prueba ofrecidos por las versiones de comunidad, Zentyal ofrece mejor calidad y software más comprobado a los clientes de estas ediciones.


Política de publicación de versiones de la comunidad

El ciclo general de la edición para desarrolladores estará relacionado con la edición comercial. En primer lugar, la edición de desarrollo es "el laboratorio" donde se probarán las nuevas características y despliegues. Más tarde será comprobado en sucesivas betas y finalmente será estabilizado. Cuando una de las características nuevas presentes en la edición de desarrollo sea estabilizada, podrá ser portada a la edición comercial.


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 Redmine(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 Redmine de Zentyal desde https://tracker.zentyal.org/.

[4] Redmine: es una herramienta para la gestión de proyectos y el

seguimiento de erroreshttp://www.redmine.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 Redmine 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.


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 (5), aunque tambien hay canales de IRC (6) disponibles.

[6] 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 Wiki de Zentyal (http://wiki.zentyal.org/).

Personal tools
Namespaces

Variants
Actions

Zentyal Wiki

Zentyal Doc
Navigation
Toolbox