ansible-koji/opentofu/README.rst

130 lines
3.7 KiB
ReStructuredText

==========================================
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`.
.. code-block:: bash
# 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 /
.. important::
No olvides instalar cloud-init y cloud-utils-growpart en tu imagen base de CentOS Stream 10.
Actualiza tu imagen
-------------------
Un pequeño truco para actualizar tu imagen base de CentOS Stream 10:
.. code-block:: bash
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.
.. code-block:: bash
# 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`:
.. code-block:: yaml
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`:
.. code-block:: hcl
variable "guest_count" {
description = "Número de máquinas virtuales a crear"
type = number
default = 1 # Cambia este valor
}
O en `terraform.tfvars`:
.. code-block:: hcl
guest_count = 3
O por línea de comandos:
.. code-block:: bash
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.
.. note::
Una alternativa a esto sería olvidarnos de cloud-init y usar scripts solamente.