Arquitectura técnica¶
InfraMedia se construye como imagen y no se modifica en la máquina. La raíz del sistema de archivos se compone de capas, cada capa una imagen squashfs empaquetada en la compilación. Todo lo que la máquina escribe vive en particiones aparte.
Capas del firmware¶
| Capa | Contenido |
|---|---|
| Base | Linux con systemd, el demonio de gestión, la interfaz web, los módulos del núcleo |
postgres |
el servidor de base de datos para los productos que lo necesitan |
| Aplicación | el servidor de medios: sus ejecutables y lo que necesiten más allá de la capa base |
La capa de la aplicación es un incremento sobre la base: solo entra en ella la diferencia con la capa base. Las bibliotecas que ya están abajo no se vuelven a subir.
Particiones del disco¶
El instalador divide el disco en tres particiones.
- FIRMWARE — la partición de arranque EFI: los archivos de arranque de las versiones instaladas, las imágenes de las capas, el menú del gestor de arranque.
- SETTINGS — la configuración de la máquina: el almacén del configurador y la superposición de
/etc. - VAR — datos mutables: registros, el directorio de la base de datos, los archivos de trabajo de la aplicación.
La raíz permanece en solo lectura todo el tiempo. El directorio personal de root es un tmpfs y vive hasta el siguiente reinicio; lo que deba sobrevivir a uno va en la partición de datos mutables.
Arranque¶
La máquina arranca con systemd-boot. El núcleo, el initrd, la línea de comandos y el manifiesto del contenido del firmware están pegados en un único archivo de arranque. Se hace por una sola propiedad: elegir una entrada de arranque elige el núcleo, el initrd y la lista de capas a la vez, y no pueden desincronizarse. Dos versiones del firmware en el disco son dos entradas del menú, y revertir devuelve el conjunto entero.
El arranque transcurre así.
- UEFI entrega el control al gestor de arranque, que lanza el archivo de arranque de la versión elegida en el menú.
- El initrd lee el manifiesto, localiza las imágenes de las capas en la partición de arranque y verifica sus sha256 contra el manifiesto.
- Las capas se montan y se componen en la raíz; encima se monta la superposición de
/etcdesde la partición de configuración. - El control pasa a systemd, que levanta el demonio de gestión y la aplicación.
El initrd es un guion de busybox: no depende de la aplicación y se compila una vez por arquitectura.
El configurador¶
El configurador es el demonio de gestión de la máquina. Escucha HTTP en el puerto 8090 y expone la API: resumen de la máquina, interfaces de red, nombre de la máquina y servidores de hora, firmware, reinicio y apagado. También sirve la interfaz web — no hay un puerto aparte para ella.
Actúa sobre el sistema llamando a los programas estándar y escribiendo archivos de configuración — ip, networkctl, resolvectl, hostnamectl, timedatectl, systemctl y los archivos bajo /etc/systemd/.
El almacén de configuración¶
La única fuente de verdad sobre cómo está configurada la máquina es el almacén de configuración del configurador. Los archivos de systemd se generan a partir de él y nunca se releen.
De ahí se siguen dos reglas prácticas.
- Editar a mano los archivos generados no sirve de nada: la siguiente generación restaura el valor guardado.
- El valor guardado y el estado real son cosas distintas. El valor guardado sale del almacén; el estado real lo toma el configurador del sistema en marcha mediante la salida legible por máquina de las utilidades del sistema, y ambos pueden diferir.
La sesión de cambio¶
Los cambios de red se aplican en modo «confirmar o revertir». Un cambio abre una sesión y, mientras está abierta, el almacén queda congelado por completo. Si la confirmación no llega a tiempo, el almacén vuelve a la copia guardada y la configuración a la anterior. Nunca hay más de una sesión abierta.
El sentido del mecanismo es práctico: un error en la configuración de una interfaz ya no significa perder el acceso a la máquina.
Modo limitado¶
Si el almacén no se puede leer — el archivo está dañado o su versión es más nueva que el propio demonio — el configurador pasa a modo limitado: las operaciones de lectura funcionan, los cambios se rechazan y no se genera nada. La máquina sigue funcionando con lo que ya se generó.
El perfil de hardware¶
El perfil de hardware describe las máquinas sobre las que corre el firmware de esta arquitectura: la configuración del núcleo con sus controladores y las reglas que llevan las interfaces físicas a nombres canónicos según la ruta del dispositivo. Los controladores de todas las máquinas admitidas están integrados en un solo núcleo, y la misma imagen arranca en cualquiera de ellas.
Los nombres canónicos se asignan por el papel de la interfaz — manage para las de gestión, streaming para las de transmisión, con un número de orden. Solo se puede configurar por la API una interfaz que tenga nombre canónico; una interfaz física sin él se ve, pero no se configura.
La interfaz web¶
La interfaz web viaja en la capa base y la sirve el propio demonio — tiene que funcionar en una máquina donde la aplicación no existe o no ha arrancado. Tiene cinco secciones: Resumen, Interfaces, Sistema, Actualizaciones, Alimentación.
Las pantallas se construyen aparte del armazón: no llevan tema, ni enrutador, ni autenticación, y no saben dónde está la API. Eso les da dos entradas — la aplicación en el puerto del configurador y una sección dentro de la consola de la aplicación, que carga las pantallas desde la propia máquina. El operador configura el chasis donde ya trabaja con el servidor de medios.
Dos versiones¶
El sistema operativo y el firmware del servidor llevan números distintos. El firmware es InfraMedia de una versión más la aplicación de otra; ambas quedan registradas en el manifiesto del archivo de arranque. La aplicación se compila sobre las partes publicadas del sistema operativo en lugar de recompilarlo.