Actualizar de 3.2 a 3.3
Esta versión de Usuarios, presenta nuevas funciones sobre la versión 3.2.
A continuación se describen los pasos para realizar la actualización de versión.
NO OLVIDE REALIZAR UNA COPIA DE SEGURIDAD DE LA APLICACIÓN Y LAS BASES DE DATOS ANTES DE CONTINUAR
Consideraciones iniciales
- Es necesario contar con una instalación de SIU-Araí: Usuarios en la versión
3.2
- Se debe tener en cuenta que el proceso de actualización representa migrar la base PostgreSQL (la de LDAP es sólo en caso de requerir soporte a BCRYPT)
- Se deberá realizar un despliegue con imágenes Docker
- La plataforma consta de múltiples módulos independientes (
api
,idm
eidp
). Ver más detalles de la nueva arquitectura.
La versión 3.3
mantiene los requerimientos mínimos respecto a la versión anterior:
- Orquestador para contenedores, con soporte a imágenes Docker
- PostgreSQL requerido en versión mínima 14 y máxima 16
- OpenLDAP requerido en versión 2.4.44 o superior
Procedimiento
Para migrar de una instalación 3.2
a una 3.3
se deben seguir los siguientes pasos:
- Preparar accesos y versiones
- Resguardo de las bases de datos y assets
- Actualizar Bases de datos
- Desplegar contenedores
Preparar accesos y versiones
Definir la versión a utilizar
export VERSION=v3.3.0 export VERSION_ANTERIOR=v3.2.4
Autenticarse contra la registry de imágenes Docker del SIU (utiliza credenciales del HUB)
docker login hub.siu.edu.ar:5005
Donde opere con imágenes Docker del SIU, se requiere este paso
Descargar la imagen de la nueva versión de la aplicación. Asegurarse de tener la versión adecuada
docker pull hub.siu.edu.ar:5005/siu-arai/arai-usuarios/idp:$VERSION docker pull hub.siu.edu.ar:5005/siu-arai/arai-usuarios/idm:$VERSION docker pull hub.siu.edu.ar:5005/siu-arai/arai-usuarios/api:$VERSION
Preparar la configuración de conexión a las bases de datos
Para poder realizar la migración, es necesario configurar unas variables de entorno para conectarse a OpenLDAP y PostgreSQL respectivamente. Ajustarlo a los parametros requeridos.
echo \ "#configurar ENV temporal LDAP_HOST=ip_ldap_host LDAP_PORT=389 LDAP_TLS=0 LDAP_METHOD=user LDAP_BINDUSER=cn=admin,dc=siu,dc=cin,dc=edu LDAP_BINDPASS=adminldappass LDAP_SEARCHBASE=dc=siu,dc=cin,dc=edu LDAP_USERS_OU=usuarios LDAP_USERS_ATTR=ou LDAP_ACCOUNTS_OU=usuariosCuentas LDAP_ACCOUNTS_ATTR=ou LDAP_GROUPS_OU=groups LDAP_GROUPS_ATTR=ou DB_HOST=ip_pg_host DB_PORT=5432 DB_DBNAME=dbname DB_USERNAME=dbuser DB_PASSWORD=dbpass DB_SCHEMA=usuarios IDM_URL=http://url.arai-usuarios SEGURIDAD_ALGORITMO_SALT=yhWGyAH1KI7jPR75FN8V SEGURIDAD_ALGORITMO_PASS=crypt SEGURIDAD_CHECK_PASS=nada SEGURIDAD_INFO_PASS="La contraseña debe tener al menos 8 caracteres, entre letras mayúsculas, minúsculas, números y símbolos, no pudiendo repetir caracteres adyacentes" SEGURIDAD_DURACION_DIAS_PASS=0 TOBA_USUARIO=admin TOBA_PASSWORD=nada" > migrar.env
Backups de las base de datos
Realizar el backup de PostgreSQL de manera preventiva
pg_dump -b -O -x --clean --create --disable-triggers --if-exists -h ${DB_HOST} -p ${DB_PORT} -U ${DB_USERNAME} -d ${DB_DBNAME} -f dump_31.sql
Realizar el backup de LDAP de manera preventiva, ver documentación.
Actualizar PostgreSQL
Antes de actualizar, hay que exportar la configuración de la aplicación y descargarla, para ello se crea un directorio temporal
instalacion_3_2
que será usada como volumen y recibirá los datos exportadosmkdir -p /tmp/instalacion_3_2 docker run --rm -it \ --env-file=migrar.env \ --volume /tmp/instalacion_3_2:/tmp/mapeo_interno \ hub.siu.edu.ar:5005/siu-arai/arai-usuarios/idm:$VERSION_ANTERIOR -- \ sed -i 's/\[arai_usuarios\]/\[arai_usuarios\]\nusar_perfiles_propios="1"/g' /usr/local/app/idm/instalacion/i__produccion/instancia.ini \ && idm/bin/instalador instalacion:exportar -d /tmp/mapeo_interno --no-interaction --no-progress && chown -R 222 /tmp/mapeo_interno
Nota: Esta versión requiere del ajuste de permisos de la carpeta exportada, ya que la nueva imagen de Arai-Usuarios corre el proceso de Apache con un usuario sin privilegios.
Con los datos de configuración exportados, se migra la estructura de la base de datos en PostgreSQL
docker run --rm -it \ --env-file=migrar.env \ --volume /tmp/instalacion_3_2:/tmp/mapeo_interno \ hub.siu.edu.ar:5005/siu-arai/arai-usuarios/idm:$VERSION -- \ idm/bin/instalador docker:db-actualizar -p /tmp/mapeo_interno --no-interaction --no-progress
Nota: El proceso de actualización aún NO TERMINO. La siguiente sección es crucial para finalizar la actualización a la versión
3.3
.
Migrar datos
Actualizar configuración
Toda la configuración del proyecto se realiza por medio de variables de entorno. Cada módulo cuenta con un conjunto de variables que permiten su parametrización:
- el idp/templates/.env.dist del módulo idp
- el idm/templates/.env.dist del módulo idm
- el api/templates/.env.dist del módulo api
Verificar cambios
En el IDM, se proporciona un comando para verificar la configuración de la aplicación y las bases de datos, para ello se debe conectar a un contenedor existente IDM y ejecutar de la siguiente manera:
docker exec -it ID-CONTENDOR-IDM bash
Una vez dentro ejecutamos los siguientes comandos
source /siu-entrypoint.d/01-prepare-secrets
idm/bin/instalador proyecto:verificar --no-interaction --no-progress --check-postgres
Este comando mostrará en la salida de su ejecución el chequeo de:
- la versión de la base de datos PostgreSQL
- los esquemas de la base OpenLDAP
- la versión de la imagen Docker respecto a las bases
- conexiones a servicios varios
Desplegar
Vea la instalación para tener un ejemplo del despliegue en Docker.
Volúmenes
Normalmente lo que hay que tener en cuenta aquí es que cuando ejecute los contenedores, enlace el contenido local (los recursos y certificados) con sus rutas a donde el contenedor espera que estén.
Por ejemplo, los contenedores idp
, idm
y api
usan los recursos (imágenes de usuarios y aplicaciones), por lo que
debe si está ejecutando con docker-compose deberá tener algo asi:
Es necesario durante esta actualización generar un cambio de permisos sobre los archivos que se encuentran en los volumenes. Esto es debido a que la nueva imagen corre el proceso de Apache con un usuario sin privilegios dentro del contenedor, por lo que no puede acceder a los archivos generados por las imagenes previas que corrian como root.
En particular, el proceso corre con el id de usuario (222
) por lo que se recomienda realizar los cambios de propiedad a dicho identificador.
Esto se puede lograr con el comando chown
chown -cR 222 /usr/local/app/resources
volumes:
- $ASSETS:/usr/local/app/resources
El contenedor idp
es el que requiere los certificados como proveedor de identidad. Deberá agregarlos así:
volumes:
- $ASSETS:/usr/local/app/resources
- $CERTS/certificado_idp.key:/usr/local/app/idp/config/simplesamlphp/certificado_idp.key
- $CERTS/certificado_idp.crt:/usr/local/app/idp/config/simplesamlphp/certificado_idp.crt
- $CERTS/oidc_module.pem:/usr/local/app/idp/config/simplesamlphp/oidc_module.pem
- $CERTS/oidc_module.crt:/usr/local/app/idp/config/simplesamlphp/oidc_module.crt
El contenedor idm
es un cliente SAML del IdP. Requiere el certificado público del IdP. Deberá agregarlos así:
volumes:
- $ASSETS:/usr/local/app/resources
- $CERTS/certificado_idp.crt:/usr/local/app/idm/instalacion/idp.crt
Versiones menores
A continuación se describen cambios internos de la estructura de la imagen y/o en variables de entornos usadas para su configuración.