* Implementación del rol de Ansible 'siguldry' para CentOS Stream 10 * Migración del plugin de firmas de Koji Hub a un spooler asíncrono * Modificación de roles para utilizar empaquetamiento RPM nativo de siguldry-pkcs11 * Documentación de decisiones (ADRs) y roadmap en docs/technical/ * Limpieza de binarios locales pesados de PKCS#11 en Ansible Co-developed-by: Gemini AI <renich+gemini@woralelandia.com> Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2.4 KiB
Especificación Técnica de MxOS Koji
Este documento detalla las especificaciones técnicas y requisitos de diseño del cluster de compilación de MxOS. El objetivo es mantener una compatibilidad estricta con la infraestructura de CentOS Stream 10 para facilitar la colaboración e integración de paquetes.
Arquitectura y Componentes
El entorno está compuesto por 5 roles principales distribuidos en nodos independientes ejecutados bajo CentOS Stream 10:
Koji Hub: Servidor web Apache con mod_wsgi expuesto por HTTPS. Recibe las llamadas XML-RPC del cliente y los constructores, y maneja el estado de la base de datos.
Koji DB: Motor relacional PostgreSQL que almacena los metadatos de las tareas, paquetes, tags y firmas.
Koji NFS: Almacenamiento compartido montado en /mnt/koji en los nodos pertinentes para el almacenamiento de los RPMs y repositorios.
Koji Builder: Nodo ejecutor del demonio kojid. Inicia entornos aislados chroot de Mock para compilar los RPMs.
Lookaside Cache (Dist-Git): Servidor web Apache con scripts CGI para la descarga de tarballs y fuentes externas.
Integración con Git y Lookaside Cache
Para asegurar compatibilidad con CentOS Stream, los paquetes RPM se estructuran de la siguiente manera:
Repositorios Git: Hospedados bajo la organización RPMs en git.mx-os.mx/RPMs/<paquete>.git.
Filtro de SCM (AllowedSCMs): El archivo /etc/koji-hub/hub.conf restringe las compilaciones a repositorios oficiales:
AllowedSCMs = git.mx-os.mx:/RPMs/*.git:*:use_common_checkoutArchivo sources: Cada repositorio Git contiene un archivo sources en la raíz del proyecto. El formato del archivo es:
SHA512 (tarball.tar.gz) = hash_sha512_completo
Firma de Paquetes con Sigul
La firma de los paquetes resultantes se realiza de manera segura y aislada usando la arquitectura oficial de Sigul:
Sigul Server: Nodo aislado donde reside el llavero GPG con la llave privada.
Sigul Bridge: Nodo intermediario en una zona de red restringida que recibe solicitudes del cliente y las despacha al servidor.
Sigul Client: Cliente CLI (sigul) instalado en el Koji Hub. Ejecuta solicitudes de firma mediante llamadas autenticadas por certificados SSL TLS y ACLs.