Aprovisionamiento¶
Resumen¶
Nota
Los cambios del plan de actualización corresponden a la próxima versión. Consulte su estado en Novedades de instalador y seleccione una versión publicada para instalar.
El ejecutor provisioning/seed.sh es el único escritor del estado declarado de la instancia: ningún procedimiento la modifica desde la interfaz de administración ni con comandos occ sueltos. Las cuentas del personal llegan aparte, con la carga de la planilla, y en AIO la inicialización del contenedor de APS Conecta Gestión y la fase 14 comparten la configuración de Oficina. La inicialización también configura trusted_domains.
Carga los archivos de fase numerados de provisioning/phases/ en orden fijo y ejecuta cada uno en una subshell propia con set -e.
Una fase que falla detiene la ejecución con FATAL: phase <archivo> failed, y ninguna fase traspasa variables de shell a la siguiente: el estado entre fases pasa por la instancia y las guardias lo vuelven a consultar.
Una fase ejecutada fuera del ejecutor se niega a correr, porque sin el archivo del establecimiento recorrería arreglos vacíos y terminaría en verde sin escribir nada.
El ejecutor tiene cuatro puertas de entrada:
La siembra explícita
bash provisioning/seed.sh, en el repositorio instalador: la misma secuencia de fases, con toda su salida en pantalla.El Provisionador del instalador de un centro, en el repositorio instalador, que ejecuta
bash provisioning/seed.shcontra la instancia de AIO pordocker exec.El temporizador semanal
aps-conecta.timer, que repite la provisión sin intervención los domingos a las 03:00 hora de Santiago (aps-conecta provision --reponer); en una instancia convergida no escribe nada, y una deriva aparece como unidad fallida.El ensayo de instalación limpia de la integración continua, que instala la etiqueta publicada tal como la instala un establecimiento y siembra después; su segunda siembra, que no escribe nada, es una de sus pruebas.
Antes de la primera fase, el ejecutor exige tres condiciones y se detiene si falta alguna:
SITE, en.env, nombra un archivosites/<slug>/site.shque existe.El archivo del establecimiento define
SITE_FOLDERS,SITE_TEAMSySITE_WELCOME: vacío es válido, ausente no.La instancia responde instalada a
occ status.
La convergencia es aditiva: aplica todo lo reversible y nunca borra carpetas de grupo, cuentas ni archivos.
Lo que sigue vivo en la instancia sin estar declarado se informa al final de la siembra y con bash scripts/divergence.sh, con el objeto y el comando que lo eliminaría.
Tabla¶
Fase |
Qué escribe |
Por qué |
|---|---|---|
|
|
En una estación clínica compartida, quien se sienta después hereda la sesión anterior: con |
|
|
En modo |
|
El certificado intermedio de la autoridad que firma el sitio del Instituto de Salud Pública, y la autoridad del instalador cuando el contenedor la tiene montada (instalación por IP). |
Ese sitio sirve solo su certificado hoja; un cliente del servidor no sigue el puntero AIA y sin el intermedio no recibe las 24 fuentes de alertas ANAMED que lee epidemiologia. Va antes de |
|
|
|
|
Cada aplicación que declara el manifiesto de la suite ( |
Nada descarga por su cuenta y nada contacta la tienda fuera de ese comando acotado: la misma siembra produce la misma instancia, también sin red para las propias. Una versión instalada distinta de la del candado se reimpone, y una reparación nunca se convierte en una actualización. |
|
En el conector |
Un documento abre en ventana nueva y no reemplaza la carpeta desde la que se abrió; el editor sigue el tema claro de la instancia; ODF se edita con la pérdida de formato que implica la conversión (#45). En AIO, el entrypoint del asistente es dueño de la URL pública, del secreto y de |
|
Nombre, eslogan, URL y colores de |
La marca es configuración como código. Sin |
|
Restringe a |
El administrador conserva todas las aplicaciones y el resto de las cuentas recibe el conjunto reducido. Los interruptores van antes de las deshabilitaciones: el de |
|
|
El grupo es la única llave de acceso. Los roles compartidos mantienen comparable la matriz de un centro con la de otro; las categorías no se definen por sitio, y un rol local con una categoría desconocida detiene la fase. |
|
Una carpeta de grupo por entrada de |
Las carpetas de grupo no se anidan: los puntos de montaje con barra ( |
|
Cada fila de |
Las concesiones solo agregan: sin reglas de denegación, que anularían la unión de permisos de una persona con varios roles. Administrar incluye eliminar, para que un archivo subido por error pueda retirarse. Revocar una concesión no pierde archivos. |
|
La carpeta de grupo del motor de IntraVox con el nombre |
La pantalla de bienvenida es estructura y no dato de prueba, por eso la fase corre en todos los centros. Converge por sección y nunca sobrescribe lo que el personal editó. |
|
Una cuenta por cargo: |
Son cargos, no personas. Una jefatura por sector mantiene probada la separación por sector de la matriz de acceso. La fase nunca crea grupos: si uno falta, la cuenta se crea igual y la falta queda en el registro de la ejecución. |
|
El archivo sintético |
Entrega el mecanismo de contenido de prueba; el texto declara que no contiene datos reales. |
Notas¶
Guardias de idempotencia¶
Cada paso que escribe consulta antes el estado y solo escribe la diferencia, con los ayudantes de provisioning/lib.sh.
config_system_set, app_config_set y theming_set escriben una clave solo cuando su valor difiere, y distinguen una clave ausente de una clave vacía.
ensure_group, ensure_user y ensure_groupfolder consultan la lista de la instancia antes de crear.
gf_grant compara la máscara de permisos vigente y la reescribe cuando difiere, tanto para ampliar como para restringir.
theming_image_set es el único ayudante que vuelve a escribir en cada ejecución.
scripts/seed-idempotent.sh corre una segunda siembra y falla si su registro contiene un verbo de escritura, con las imágenes de marca como única excepción, por nombre.
La primera línea de la salida nombra la ejecución: un árbol de desarrollo la toma de git describe; la versión de una instalación de centro la fija el archivo VERSION del paquete, que su CLI muestra en cada arranque.
Estructura y datos de prueba¶
Las fases 05 a 41 escriben estructura y las fases 50 y 60, datos de prueba.
Con SEED_FIXTURES=0, el ejecutor omite toda fase de número 50 o mayor.
Los datos de prueba nunca crean estructura: la fase 50-users agrega cuentas solo a grupos que la fase 20-groups ya creó.
El instalador de un centro fuerza SEED_FIXTURES=1, porque sin la fase 50-users el centro quedaría sin sus cuentas de cargo.
En esa instalación, cada cuenta de cargo recibe su propia contraseña inicial sellada; solo la pila de desarrollo y la integración continua les dan a todas FIXTURE_USER_PASSWORD.
Datos del establecimiento¶
Todo lo propio de un establecimiento está en sites/<slug>/site.sh: identidad, equipos, carpetas, subcarpetas, matriz de acceso, roles locales y árbol de bienvenida.
scripts/deis.py escribe ese archivo a partir del registro DEIS que trae el repositorio y pregunta los sectores y programas, que el registro no conoce.
El archivo queda fuera del control de versiones, como .env, y es completo: nada se hereda al sembrar.
El ejecutor lo carga una vez antes de la primera fase; cada fase lo ve y ninguna puede modificarlo.
all-staff, las cuatro categorías y los 22 roles compartidos están en el código y son iguales en todas las instalaciones.
Orden y fallos¶
El orden sale del ordenamiento alfabético que hace la shell al expandir phases/[0-9]*.sh, no de un orden numérico: todo prefijo debe tener dos dígitos, porque una fase 100- correría entre 10- y 12-.
Las dependencias de ese orden son explícitas: 12-apps instala el conector; 14-office utiliza la rutina compartida con el arranque para configurarlo, el menú que colorea 15-branding y las carpetas de grupo de 30-folders; 41-intravox necesita los grupos de 20-groups; 50-users necesita los grupos y la matriz ya aplicados.
Un fallo se corrige y se repite el mismo comando: lo ya aplicado se salta en segundos.
El ejecutor prueba el resultado de cada fase como un comando propio y no dentro de un if, porque bash suspendía set -e dentro de la subshell y una fase seguía después de su primer error (B-001).
Deuda técnica y límites¶
El repositorio no tiene respaldo propio, y por eso la convergencia informa en lugar de borrar: un error de tipeo en el archivo del establecimiento no puede destruir documentos.
Quitar una aplicación del manifiesto no la desinstala: la verificación de divergencia la informa hasta que alguien ejecuta
occ app:removea mano.Las reglas de página de un equipo nuevo se escriben una sola vez, junto con la página; si una ejecución muere entre la importación y las reglas, la página queda sin ellas y la siguiente ejecución no las repone.
LÉEME — Convenciones.mdse crea solo si no existe: una versión editada dedocs/CONVENTIONS.mdno llega a una instancia que ya tiene el archivo, porque el personal pudo anotarlo.Con el esqueleto vacío, una cuenta nueva no recibe carpeta de plantillas y la acción de crear no ofrece plantillas.
Los certificados importados viven en el volumen de datos: sobreviven un reinicio, pero no un borrado del volumen.
Cerrar la ventana no cierra la sesión en un navegador que restaura la sesión anterior; eso requiere una política de la estación de trabajo.