ansible-koji/opentofu
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Rénich Bon Ćirić c290878c96
feat: deploy Caddy repository server for BaseOS packages
- Provision cs10-repo.mx-os VM with 500 GB system disk using OpenTofu.
- Create and apply Ansible role to install and configure Caddy to serve /srv/repo/.
- Update Koji Hub export script to rsync signed binary RPMs to the repo server and trigger createrepo_c.
- Record ADR-05 detailing this design decision and update package compilation guide.
- Log progress in the project journal.

Co-developed-by: Gemini AI <renich+gemini@woralelandia.com>
Signed-off-by: Rénich Bon Ćirić <renich@woralelandia.com>
2026-06-16 16:10:32 -06:00
..
scripts refactor(ansible): Estandariza nombres de roles y actualiza Koji 2025-11-15 20:08:24 -06:00
ssh primer commit 2025-08-06 05:45:11 -06:00
templates Secure Koji setup: add koji user, fix NFS/SELinux, use CentOS Stream 10 repos 2025-11-12 21:54:15 -06:00
.editorconfig primer commit 2025-08-06 05:45:11 -06:00
.gitignore ignore: limpieza 2025-08-06 05:56:11 -06:00
cs10-base.tf feat: Integración de Siguldry PKCS#11 y spooler de firmas 2026-06-16 10:06:44 -06:00
cs10-repo.tf feat: deploy Caddy repository server for BaseOS packages 2026-06-16 16:10:32 -06:00
GNUmakefile feat: Mejorar la configuración y seguridad de Koji 2025-11-22 11:52:50 -06:00
main.tf refactor(ansible): Estandariza nombres de roles y actualiza Koji 2025-11-15 20:08:24 -06:00
README.rst primer commit 2025-08-06 05:45:11 -06:00
variables.tf feat: Integración de Siguldry PKCS#11 y spooler de firmas 2026-06-16 10:06:44 -06:00

Despliegue Básico de OpenTofu Libvirt CS10

Este proyecto proporciona una configuración básica de OpenTofu para desplegar máquinas virtuales utilizando el proveedor Libvirt.

Prerrequisitos

Esto hay que hacerlo en tu estación de trabajo, como root.

# Añadir usuario a grupos libvirt, kvm, qemu (reemplaza <tu_nombre_de_usuario>)
usermod -a -G libvirt,kvm,qemu <tu_nombre_de_usuario>

# Sal y vuelve a entrar en tu sesión o reinicia

# Fedora
## Instalar libvirt-nss
dnf install libvirt-nss

## Habilitar libvirt-nss
authselect enable-feature with-libvirt-nss

# Reinicia tu sistema.

Adicionalmente, tienes que tener una imagen base de CentOS Stream 10 en: $HOME/VirtualMachines/cs10-base.qcow2. Debe ser una instalación mínima y con la instalación sin LVM; con la partición de root como la del índice más alto.

Por ejemplo, tus particiones deben lucir así:

# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    253:0    0  100G  0 disk
├─vda1 253:1    0  600M  0 part /boot/efi
├─vda2 253:2    0    1G  0 part /boot
├─vda3 253:3    0  512M  0 part [SWAP]
└─vda4 253:4    0  2.9G  0 part /

Actualiza tu imagen

Un pequeño truco para actualizar tu imagen base de CentOS Stream 10:

virt-customize -a $HOME/VirtualMachines/cs10.qcow2 --smp=4 --memsize=8192 --update

Eso la actualiza ahí mismo, utilizando 4 CPUs y 8192 MiB de RAM para que sea más rápido. Es muy útil para mantener al día tu imagen base.

Despliegue

Estos comandos se ejecutan en el directorio raíz del proyecto.

# Inicializar OpenTofu
tofu init

# Revisar el plan
tofu plan

# Aplicar configuración
tofu apply

# Aplicar configuración (sin confirmación)
tofu apply -auto-approve

# Destruir recursos
tofu destroy

# Destruir recursos (sin confirmación)
tofu destroy -auto-approve

Personalización de la inyección de llaves SSH

Para usar tu propia llave SSH en las VMs:

Copia tu llave pública de SSH (ej. id_rsa.pub) a ssh/millave.pub y, luego, modifica templates/cloudinit.cfg.tftpl:

ssh_authorized_keys:
  - ${file("ssh/millave.pub")}

Aumento del Número de máquinas virtuales

Para crear múltiples "guests", ajusta la variable guest_count:

Modifica variables.tf:

variable "guest_count" {
  description = "Número de máquinas virtuales a crear"
  type        = number
  default     = 1  # Cambia este valor
}

O en terraform.tfvars:

guest_count = 3

O por línea de comandos:

tofu apply -var="guest_count=3"

Problemática

El CD-ROM tiene que usar SATA cuando usamos UEFI

Por cuestiones de diseño del plugin, hay que aplicar un parche con XSLT al XML del CD-ROM en donde se adhiere el ISO de cloud-init. El problema es que no hay manera de definir ese CD-ROM para que use el bus SATA, así que usamos la táctica descrita en este reporte para hacerlo: https://github.com/dmacvicar/terraform-provider-libvirt/issues/1018#issuecomment-1886550277

Con este parche, es posible usar cloud-init para las operaciones que necesitamos.