| Filename | Latest commit message | Latest commit date |
|---|---|---|
Este commit introduce varias mejoras en los roles de Ansible para Koji: - **Rol koji_hub:** - Se reemplazó `lineinfile` con una plantilla completa para `hub.conf` para mejorar la legibilidad y mantenibilidad. - Se aseguró la instalación del paquete `python3-koji-hub-plugins` para soportar el plugin `echo`. - Se eliminó una tarea `blockinfile` redundante que duplicaba la configuración de la base de datos en `hub.conf`. - Se rehabilitó el plugin `echo` en `hub.conf` después de asegurar su disponibilidad. - **Rol postgresql:** - Se modificó la configuración de `pg_hba.conf` para iterar correctamente sobre todos los hosts en el grupo `kojihub`, asegurando que todas las instancias del hub puedan conectarse a la base de datos. - **Rol dist_git:** - Se implementó el etiquetado persistente de contextos SELinux para los directorios de `dist-git` usando `semanage fcontext` y `restorecon`, asegurando que los contextos persistan tras reetiquetados del sistema de archivos. - **Rol common:** - Se mejoró la seguridad en la generación de claves GPG usando un archivo temporal para el script por lotes, el cual se elimina de forma segura después de la generación de la clave. - **Configuración Global:** - Se introdujo la variable `koji_source_script_path` en `vars/default.yaml` para centralizar la ruta del script `mxos-get-sources.bash`, eliminando rutas hardcodeadas en `kojid_allowed_scms` y las tareas de `kojid`. - **Documentación:** - Se actualizó `docs/instalación.rst` para reflejar los cambios en la configuración de Dist-Git, plugins y variables. |
||
| .. | ||
| scripts | ||
| ssh | ||
| templates | ||
| .editorconfig | ||
| .gitignore | ||
| cs10-base.tf | ||
| GNUmakefile | ||
| main.tf | ||
| README.rst | ||
| variables.tf | ||
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.