Un playbook para desplegar un koji de prueba. Incluye OpenTofu para desplegar infraestrctura usando libvirt + kvm/qemu.
  • Jinja 39.6%
  • HCL 18%
  • Shell 17.9%
  • Python 12.2%
  • CSS 9.5%
  • Other 2.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-11-12 01:36:52 -06:00
bin primer commit 2025-08-06 05:45:11 -06:00
docs primer commit 2025-08-06 05:45:11 -06:00
inventories primer commit 2025-08-06 05:45:11 -06:00
opentofu Estandarizar extensiones de archivos YAML a .yaml, corregir dominio SMTP a cs10, plantillar URL del servidor Sigul 2025-11-12 01:36:52 -06:00
roles Estandarizar extensiones de archivos YAML a .yaml, corregir dominio SMTP a cs10, plantillar URL del servidor Sigul 2025-11-12 01:36:52 -06:00
vars Estandarizar extensiones de archivos YAML a .yaml, corregir dominio SMTP a cs10, plantillar URL del servidor Sigul 2025-11-12 01:36:52 -06:00
.gitignore primer commit 2025-08-06 05:45:11 -06:00
ansible.cfg primer commit 2025-08-06 05:45:11 -06:00
bootstrap.yaml primer commit 2025-08-06 05:45:11 -06:00
CODE_OF_HONOR.rst primer commit 2025-08-06 05:45:11 -06:00
deploy.yaml primer commit 2025-08-06 05:45:11 -06:00
GNUmakefile make: mejores recetas 2025-08-06 06:23:38 -06:00
README.rst readme: agregué más referencias 2025-08-06 06:23:02 -06:00
requirements.yaml primer commit 2025-08-06 05:45:11 -06:00
reset.yaml primer commit 2025-08-06 05:45:11 -06:00
TODO.rst primer commit 2025-08-06 05:45:11 -06:00

Playbook de Ansible para Koji

Este playbook de Ansible automatiza el despliegue y la configuración de un sistema de compilación Koji.

Entorno de Desarrollo

Para empezar a desarrollar, necesitas configurar un entorno de virtualización local. Este proyecto usa OpenTofu para aprovisionar máquinas virtuales con libvirt.

Requisitos Previos

  • Sistema Operativo: Todo el desarrollo y las pruebas se han realizado en Fedora 42 x86_64.

  • Virtualización: Necesitas tener libvirt y qemu instalado y funcionando.

  • Permisos de Usuario: Tu usuario debe ser miembro de los grupos libvirt, kvm y qemu.

usermod -aG libvirt,kvm,qemu renich

Primeros Pasos

  1. Aprovisiona la Infraestructura: El GNUmakefile proporciona un objetivo para facilitar este proceso.

    make init

    Este comando usará OpenTofu para crear las máquinas virtuales necesarias para el entorno de Koji.

  2. Despliega Koji: Una vez que la infraestructura esté lista, puedes desplegar Koji.

    make deploy

Uso

Credenciales de Ansible Vault

Antes de ejecutar el playbook, crea un archivo cifrado vars/credentials.yaml. Este archivo contiene datos sensibles necesarios para el despliegue.

ansible-vault encrypt vars/credentials.yaml

El archivo credentials.yaml debe contener las siguientes variables:

# Database
koji_db_user: koji
koji_db_password: "your-database-password"
koji_db_name: koji
koji_db_network: "192.168.122.0/24"

# Web
web_secret: "your-web-secret"

# GPG
gpg_key_passphrase: "your-gpg-key-passphrase"

# Mail
kojid_smtp_pass: "your-smtp-password"

Desarrollo

Este proyecto incluye un GNUmakefile para agilizar las tareas de desarrollo comunes:

  • make init: Destruye la infraestructura existente con OpenTofu y luego la recrea.

  • make deploy: Ejecuta el playbook de despliegue principal.

  • make reset: Ejecuta el playbook de reseteo.

  • make regenerate-certs: Limpia el directorio certs/ y luego ejecuta las tareas de Ansible necesarias para regenerar todos los certificados. Esto es útil cuando solo necesitas actualizar los certificados sin afectar la infraestructura.

  • make clean-certs: Elimina todos los archivos en el directorio certs/ excepto el archivo .gitignore.

  • make tofu-init: Inicializa el directorio de trabajo de OpenTofu.

  • make tofu-apply: Crea o actualiza la infraestructura definida en los archivos de OpenTofu.

  • make tofu-destroy: Destruye la infraestructura gestionada por OpenTofu.

Despliegue

Para desplegar, solo es necesario hacer lo siguiente:

make tofu-init tofu-destroy tofu-apply
sleep 30s
make deploy

Una vez desplegado, solo tienes que abrir un navegador e ir a: https://cs10-koji-00.mx-os/koji

Cliente (CLI)

El playbook configura al usuario kojiadmin para administrar la instancia de Koji. Su archivo de configuración de cliente se encuentra en /home/kojiadmin/.koji/config en el Koji Hub (cs10-koji-00.mx-os). El playbook genera este archivo automáticamente e incluye las rutas de los certificados SSL necesarios y la configuración authtype = ssl.

Para interactuar con Koji como el usuario kojiadmin desde el Koji Hub, normalmente usarás comandos como:

koji moshimoshi

Firma de paquetes

Este playbook configura Koji Hub para la firma automatizada de RPM a través de un servidor Sigul externo. Para fines de prueba, despliega un servidor Sigul simulado en el host de Koji Hub (cs10-koji-00.mx-os) que simula una firma exitosa.

Cómo funciona la firma automatizada

  1. Koji completa una compilación.

  2. Koji activa un complemento de Koji Hub (sigul_sign.py).

  3. El complemento envía una solicitud al servidor Sigul configurado (actualmente el servidor simulado en http://localhost:8080/sigul).

  4. El servidor Sigul "firma" el RPM (en el caso del servidor simulado, devuelve una respuesta de éxito y datos de firma simulados).

  5. El complemento importa la firma de nuevo en Koji.

Referencias