- Jinja 39.6%
- HCL 18%
- Shell 17.9%
- Python 12.2%
- CSS 9.5%
- Other 2.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| bin | ||
| docs | ||
| inventories | ||
| opentofu | ||
| roles | ||
| vars | ||
| .gitignore | ||
| ansible.cfg | ||
| bootstrap.yaml | ||
| CODE_OF_HONOR.rst | ||
| deploy.yaml | ||
| GNUmakefile | ||
| README.rst | ||
| requirements.yaml | ||
| reset.yaml | ||
| TODO.rst | ||
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
Aprovisiona la Infraestructura: El GNUmakefile proporciona un objetivo para facilitar este proceso.
make initEste comando usará OpenTofu para crear las máquinas virtuales necesarias para el entorno de Koji.
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
Koji completa una compilación.
Koji activa un complemento de Koji Hub (sigul_sign.py).
El complemento envía una solicitud al servidor Sigul configurado (actualmente el servidor simulado en http://localhost:8080/sigul).
El servidor Sigul "firma" el RPM (en el caso del servidor simulado, devuelve una respuesta de éxito y datos de firma simulados).
El complemento importa la firma de nuevo en Koji.