Alfresco Multi-tenant

Si os muestro esta imagen

mmm700f_2

muchos diréis que no es ninguna novedad, que es lógico pensar que aunque todos acedemos a internet y nuestros datos viajan por un mismo cable cada red particular puede compartir sus documentos sin que el vecino de abajo sepa cuales son. Pues esto mismo podemos hacer con Alfresco, gracias a la característica “Multi-Tenant” (a partir de aquí llamada MT).

multitenant_architecture4b

Para qué sirve esta característica?

Podríamos definirla como la posibilidad de crear alfrescos independientes usando una única instancia de Alfresco. Nuestros clientes usarán un único Alfresco, un único war, sin embargo gracias al MT podremos generar nuevos repositorios para que cada organización tenga su propio repositorio físico pero todos usen un único método de entrada.

Activación del Multi-Tenant (Para este ejemplo hemos usado Alfresco Enterprise 3.2.1.2)

Cuando instalamos un nuevo Alfresco no disponemos de la característica MT activada por defecto. Para poder activarla es necesario modificar una serie de documentos. Si hemos descargado la versión de Alfresco que incluye el tomcat, debemos ir al directorio /tomcat/shared/classes/alfresco/extension/mt.

Observaremos que existen 3 archivos con extensión .sample (esta extensión es usada para que no se tenga en cuenta la configuración que contiene el archivo) que deberemos renombrar eliminando el .sample para que en el siguiente arranque de alfresco se tomen en cuenta. Los archivos a renombrar son:

  • mt-context.xml.sample -> mt-context.xml
  • mt-admin-context.xml.sample -> mt-admin-context.xml
  • mt-contentstore-context.xml.sample -> mt-contentstore-context.xml

Una vez hechos los cambios, procederemos a reiniciar/arrancar Alfresco, fijándonos que en los logs aparecerán unos mensajes que nos indican que el MT está activado:

12:24:42,449 User:System INFO [repo.tenant.MultiTAdminServiceImpl] Alfresco Multi-Tenant startup - 0 enabled tenants, 0 disabled tenants

12:24:55,127 INFO [service.descriptor.DescriptorService] Alfresco license: Enterprise - v3.2 granted to Queres Technologias (does not expire)
12:24:55,128 INFO [service.descriptor.DescriptorService] Alfresco started (Enterprise - Multi-Tenant): Current version 3.2.1 (.2 3) schema 3501 - Originally installed version 3.2.1 (.2 3) schema 3501

Gestión de los Tenants

Para poder acceder a la URL de administración de MT debemos autenticarnos como administradores en Alfresco Explorer (por defecto admin/admin) y luego ir a la URL:

http://localhost:8080/alfresco/faces/jsp/admin/tenantadmin-console.jsp

tenantConsole

Al igual que ocurre en la URL de administración de workflows lo primero que veremos será un input text para introducir los comandos y debajo una sección de ayuda con todos los comandos disponibles y una breve explicación de cada uno.

Creación de un Tenant

Para crear un tenant existe el comando create, al que debemos pasar una serie de parámetros:

  • dominio del tenant (p.e. queres.com)
  • contraseña para el usuario admin@queres.com
  • directorio del alf_data para el nuevo tenant

el comando final quedaría similar a:

create queres.com password /opt/alfresco/alf_data_queres

Si vemos los logs del catalina.out podremos seguir el proceso de creación. Cuando aparezca un mensaje en la admin consola similar a “created tenant: queres.com” el proceso ha terminado.

Una vez creado el tenant podremos acceder al repositorio usando el explorador con la misma url de siempre:

http://localhost:8080/alfresco

loginTenant

Como usuario deberemos introducir admin@queres.com y la contraseña que indicamos al crear el tenant. Al acceder veremos un repositorio limpio como la primera vez que instalamos nuestro Alfresco y sin ninguna referencia al repositorio inicial (usuarios, grupos, nodos, etc).

Desactivar un Tenant

Para impedir el acceso a un tenant basta con ejecutar la orden “disable “. Haciendo esto no borramos el repositorio pero si un usuario del tenant trata de hacer login obtendrá un error de acceso.

Habilitar un Tenant

Si queremos dar acceso nuevamente a un tenant desactivado basta con ejecutar la orden “enable “. Los usuarios del tenant podrán acceder de nuevo a él.

Eliminar un Tenant

Para eliminar un tenant debemos ejecutar la orden “delete “. Esta acción requiere que reiniciemos el servidor para que se borren los indices. Además es necesario borrar el directorio del los indices manualmente (el alf_data del tenant se especifica cuando se crea).

El resto de órdenes se pueden ver escribiendo el comando “help“, pero me pareció interesante detallar las órdenes de creación, borrado y habilitación/in-habilitación.

Referencias:
http://wiki.alfresco.com/wiki/MT
http://blyx.com/2010/02/08/multitenancy-en-alfresco/