Tarea 5: Creación de escenarios con OpenTofu
Seguimos trabajando con el repositorio ejercicios_pi. Para cada ejemplo nos situamos en el directorio opentofu/ejemploX correspondiente.
Ejemplo 4: Máquina virtual conectada a dos redes: una con DHCP y otra con direccionamiento estático
Nos situamos en el directorio opentofu/ejemplo4. En este ejemplo seguimos trabajando con redes. En esta ocasión vamos a aprender a configurar una interfaz de red de forma estática. Como en el ejemplo 3, la máquina tiene también un disco adicional de 1 GB.
En el fichero network.tf se definen dos redes:
resource "libvirt_network" "ej4-nat-dhcp": una red NAT con DHCP en el rango192.168.100.0/24.resource "libvirt_network" "ej4-aislada-static": una red aislada sin DHCP (mode = "none") en el rango192.168.130.0/24. Estudia los parámetros que hemos indicado.
Recuerda: el hecho de que conectemos una máquina virtual a dos redes no significa que netplan configure las dos interfaces. Tenemos que configurarlo nosotros, para ello:
- Se ha creado el fichero
cloud-init/network-config1.yaml, donde se guarda la configuración netplan de la máquina. En este ejemplo puedes observar cómo se ha configuradoens4de forma estática con la dirección192.168.130.10/24. Si fuera necesario podríamos indicar la puerta de enlace, el servidor DNS o cualquier otra configuración de red. - Este fichero se añade en la imagen ISO junto al fichero
cloud-init/user-data1.yamlcon el parámetronetwork_configdel recursolibvirt_cloudinit_disk "ej4-server1-cloudinit"en el ficheromain.tf.
En la información de output.tf, la dirección estática aparece como «No disponible»: OpenTofu solo conoce las direcciones que asigna el servidor DHCP.
Ejemplo 5: Dos máquinas virtuales conectadas entre sí
Nos situamos en el directorio opentofu/ejemplo5. En este ejemplo vamos a comenzar a crear escenarios, es decir, a crear varias máquinas interconectadas. En este ejemplo concreto tenemos dos máquinas que están conectadas entre sí. Para conseguirlo tenemos los siguientes ficheros:
main.tf: contiene la definición de las dos máquinas virtuales (ej5-server1yej5-server2) en un único fichero.- En el directorio
cloud-initencontramos los ficheros de configuración para cada máquina:user-data1.yaml: configuraej5-server1(Debian, usuariodebian).user-data2.yaml: configuraej5-server2(Ubuntu, usuarioubuntu).network-config1.yaml: configura las interfaces de red deej5-server1(ens3con DHCP,ens4con IP estática10.0.0.1/24).network-config2.yaml: configura la interfaz de red deej5-server2(ens3con IP estática10.0.0.2/24y gateway10.0.0.1).
network.tf: define dos redes:ej5-nat-dhcp(NAT con DHCP) yej5-muy-aislada(mode = "none", sin rango de direcciones).variables.tf: define tres variables:libvirt_pool_name,base_image_debian(debian13-base.qcow2) ybase_image_ubuntu(ubuntu2404-base.qcow2).- El fichero
output.tfdevuelve información de las dos máquinas. Como en el ejemplo 4, las direcciones estáticas aparecen como «No disponible».
En este ejemplo, ej5-server1 (Debian) está conectado a la red ej5-nat-dhcp y a la red ej5-muy-aislada. ej5-server2 (Ubuntu) se conecta únicamente a la red ej5-muy-aislada y tiene como puerta de enlace la dirección de ej5-server1 (10.0.0.1). En este ejemplo no se activa en ej5-server1 el reenvío de paquetes ni el NAT, así que ej5-server2 no tiene salida al exterior.