Actualizacion
Actualización
Entre las actuales versiones de Araí Documentos del tipo 1.0.x no existen grandes cambios de estructura y bases de datos, las migraciones consisten en reemplazar el codigo existente con algunos cambios en las variables que se requieren para configurar el proyecto y algunos cambios en chicos sobre la base de datos
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
- Existe una version previa instalada de Araí Documentos 1.0.x
- Tener en cuenta que se va a modificar la estructura de Postgres
- Se deberá realizar un despliegue con imágenes Docker
Procedimiento
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_10x.sql
Actualizar Base de Datos: 1.0.4 a 1.0.5 o superior
- Descargar modelo.sql
git clone --depth 1 --branch {ID_VERSION} https://hub.siu.edu.ar/siu-arai/docs-api.git
cd docs-api
Modelo en sql/modelo.sql
También puede descargar de la imagen de Docker descargada
id=$(docker create hub.siu.edu.ar:5005/siu-arai/docs-api:{ID_VERSION})
docker cp $id:/usr/local/app/sql/modelo.sql modelo.sql
docker rm $id
Actualizando
Actualización manual sobre la base de datos
su {DB_USERNAME}
psql --single-transaction {DB_DBNAME} < modelo.sql
Actualizar utilizando imagen de docker
Crear .env con los parametros requeridos:
echo \
"#configurar ENV temporal
# Variables obligatorias
ARAI_DOCS_DB_HOST=localhost
ARAI_DOCS_DB_PORT=5432
ARAI_DOCS_DB_DBNAME=arai_documentos
ARAI_DOCS_DB_USERNAME=postgres
ARAI_DOCS_DB_PASSWORD=postgres
# Variables no requeridas para actualizar db, pero deben estar
ARAI_DOCS_DB_SCHEMA=public
ARAI_DOCS_DB_ENCODING=utf8
ARAI_DOCS_URL=localhost
ARAI_DOCS_USER=documentos
ARAI_DOCS_PASS=documentos
ARAI_DOCS_LOG_HANDLER=errorlog
ARAI_DOCS_LOG_LEVEL=ERROR
ARAI_DOCS_TOKEN_LIFETIME=2000
ARAI_REGISTRY_URL=http://registry/registry
ARAI_REGISTRY_USER=registry
ARAI_REGISTRY_PASS=registry
" > migrar.env
El usuario ARAI_DOCS_DB_USERNAME
debe tener permisos para realizar modificaciones en la DB
La actualización mediante contenedores presenta la complejidad de que debe permitir en la configuración de su base de datos postgres, el acceso a la IP otorgada al contenedor
docker run --env-file migrar.env \
hub.siu.edu.ar:5005/siu-arai/docs-api/api:{ID_VERSION} \
--db-update
- migrar.env debe contener todos los parametros requeridos por la aplicación
- En caso de no asignar network, debe habilitar su servidor postgres para permitir acceder al container.
- (Opcional para docker)
--rm --network {SOME_NETWORK}
siendoSOME_NETWORK
el nombre de la red en caso de ambientes docker
Por ejemplo si al contenedor se le otorgaran IPs en el rango 172.18.0.0/16 en pg_hba.conf habilitar
host all all 172.18.0.0/16 md5
. Luego de actualizar la DB, la regla puede ser descartada.
Actualizar de 1.0.X a 1.1.X
Actualizar Base de Datos
El procedimiento de actualización de base de datos es similar al anterior
Variables de configuración para Organismo
Existen algunos cambios de configuraciones que se deben verificar respecto a versiones anteriores:
- Variables de Organismo por Default
ORGANISMO_TIPO=CUIL
ORGANISMO_IDENTIFICADOR=XXXXXXXX
ORGANISMO_TIPO
puede ser CUIT
o CUIL
ORGANISMO_IDENTIFICADOR
debe poseer el siguiente formato:
- 10 u 11 dígitos numéricos consecutivos ej: 20111111115
- Formato CUIT con
-
y/
ej1: 20-11111111-5 ej2: 20-11111111/5
Modificar variable de conexión con Sudocu
Si usted esta utilizando Secrets en Docker Swarm, debe seguir la guía de actualización en expedientes.siu.edu.ar
Debido a un error en la configuración en versiones anteriores de la url de la api de sudocu, se debe corregir:
TRAMITES_PARAMS={base_uri:'http://url-server/api/integracion/', method:'basic', user:'user', password:'password'}
- reemplazando por (notar que se elimina
integracion/
):
TRAMITES_PARAMS={base_uri:'http://url-server/api/', method:'basic', user:'user', password:'password'}