ansible-koji/docs/technical/spec.rst
Rénich Bon Ćirić 89d6f66be8
feat: Integración de Siguldry PKCS#11 y spooler de firmas
* 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>
2026-06-16 10:06:44 -06:00

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_checkout
  • Archivo 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.