primer commit
This commit is contained in:
commit
864b3e4008
105 changed files with 3185 additions and 0 deletions
130
opentofu/README.rst
Normal file
130
opentofu/README.rst
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
==========================================
|
||||
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.
|
||||
Loading…
Reference in a new issue