* 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>
43 lines
2.4 KiB
ReStructuredText
43 lines
2.4 KiB
ReStructuredText
===================================
|
|
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:
|
|
|
|
.. code-block:: ini
|
|
|
|
AllowedSCMs = git.mx-os.mx:/RPMs/*.git:*:use_common_checkout
|
|
|
|
* **Archivo sources**: Cada repositorio Git contiene un archivo `sources` en la raíz del proyecto. El formato del archivo es:
|
|
|
|
.. code-block:: text
|
|
|
|
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.
|