Tipos de red
Los tipos de red de servidor, como Capa 2, Capa 3 e Híbrida, pueden resultar familiares a los usuarios del Portal Equinix Metal. En el Portal, puede alternar el tipo de red con un clic de la interfaz de usuario. Para aprovechar estas características en Terraform, que sigue de cerca la API de Equinix Metal, es importante entender que el tipo de red es un valor de cadena compuesto determinado por una o más configuraciones de enlace de puertos, direccionamiento y conexión VLAN. Para cambiar el tipo de red, debe cambiar estas propiedades subyacentes del puerto o puertos.
Para más detalles, consulte la documentación de Equinix Metal en [Tipos de configuración de red.
Este proveedor de Terraform ofrece dos formas de definir el tipo de red.
Puerto de metal
El recurso equinix_metal_port expone todas las características necesarias para afectar al tipo de red de un dispositivo o emparejamiento de puertos.
A continuación se muestran ejemplos de cómo se puede utilizar el recurso equinix_metal_port para configurar varios tipos de red, suponiendo que local.bond0_id es el UUID de la interfaz de enlace que contiene eth1 y local.eth1_id es el UUID de la interfaz eth1. Éstas podrían representar los puertos de los recursos equinix_metal_device o las fuentes de datos.
Puerto de capa 3
Capa 3 (Bonded) es la configuración de puertos por defecto en los dispositivos Equinix Metal. Se proporciona a continuación para ilustrar el uso del recurso equinix_metal_port. Este HCL no debería ser necesario en la práctica, sin embargo puede ser útil en algunas configuraciones para asegurar que se establece el modo correcto, puerto por puerto, en los recursos equinix_metal_device o fuentes de datos importados.
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
bonded = true
}
resource "equinix_metal_port" "eth1" {
port_id = local.eth1_id
bonded = true
}
Puerto sin enlace de capa 2
Este ejemplo configura un servidor Equinix Metal con una configuración de red [pure layer 2 unbonded y añade dos VLAN a su puerto eth1; una de ellas establecida como [native VLAN. Observe el metaargumento depends_on en el recurso equinix_metal_port.eth1 y el atributo reset_on_delete en la configuración de ambos puertos. El reset_on_delete establecerá el puerto en la configuración por defecto (layer3 bonded sin VLANs adjuntas) antes de la eliminación/destrucción del recurso terraform. Se recomienda utilizar el argumento depends_on aquí para asegurarse de que los recursos del puerto con VLANs adjuntas se restablecen primero, ya que todas las VLANs deben ser desvinculadas antes de volver a vincular los puertos.
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
layer2 = true
bonded = false
reset_on_delete = true
}
resource "equinix_metal_port" "eth1" {
port_id = local.eth1_id
bonded = false
reset_on_delete = true
vlan_ids = [equinix_metal_vlan.test1.id, equinix_metal_vlan.test2.id]
native_vlan_id = equinix_metal_vlan.test1.id
depends_on = [
equinix_metal_port.bond0,
]
}
resource "equinix_metal_vlan" "test1" {
description = "test"
metro = "sv"
project = equinix_metal_project.test.id
}
resource "equinix_metal_vlan" "test2" {
description = "test"
metro = "sv"
project = equinix_metal_project.test.id
}
Puerto Bonded de capa 2
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
layer2 = true
bonded = true
}
Puerto híbrido sin enlace
resource "equinix_metal_port" "eth1" {
port_id = local.eth1_id
bonded = false
}
Puerto de enlace híbrido
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
layer2 = false
bonded = true
vlan_ids = [equinix_metal_vlan.test.id]
}
resource "equinix_metal_vlan" "test" {
description = "test"
metro = "sv"
project = equinix_metal_project.test.id
}
Acceso a los identificadores de puerto
El valor de ID del puerto puede obtenerse a partir de un equinix_metal_device utilizando una [expresión for.
Suponiendo que exista un equinix_metal_device con el nombre de recurso test:
locals {
bond0_id = [for p in equinix_metal_device.test.ports: p.id if p.name == "bond0"][0]
eth1_id = [for p in equinix_metal_device.test.ports: p.id if p.name == "eth1"][0]
}
Dispositivo de metal Tipo de red
El equinix_metal_device_network_type toma un tipo de red nombrado con cualquier parámetro de modo requerido y convierte un dispositivo al tipo de red nombrado. Este recurso simulaba la interfaz de tipo de red para dispositivos en el portal Equinix Metal. Esa interfaz cambió cuando se introdujeron tipos de red adicionales con configuraciones de puertos más diversas.
Cuando utilice este recurso, tenga en cuenta:
- no se garantiza que este recurso funcione en dispositivos con más de dos puertos ethernet
- es posible que no pueda expresar todas las configuraciones de puerto posibles
- los cambios posteriores en la configuración de la red pueden hacer que este dispositivo detecte cambios que no puedan conciliarse sin intervención
- Los recursos
equinix_metal_device_network_typeno deben utilizarse en dispositivos con puertos que estén siendo controlados con recursosequinix_metal_port.
Dispositivo híbrido (sin enlace)
Este ejemplo crea un dispositivo c3.small y lo pone en modo de red híbrida (unbonded).
resource "equinix_metal_device" "test" {
hostname = "tfacc-device-port-vlan-attachment-test"
plan = "c3.small.x86"
metro = "ny"
operating_system = "ubuntu_24_04"
billing_cycle = "hourly"
project_id = local.project_id
}
resource "equinix_metal_device_network_type" "test" {
device_id = equinix_metal_device.test.id
type = "hybrid"
}
Dispositivo híbrido (sin enlace) con una VLAN
Este ejemplo crea dos dispositivos en modo híbrido (unbonded) y añade una VLAN a sus puertos eth1.
locals {
project_id = "<uuid>"
device_count = 2
}
resource "equinix_metal_vlan" "test" {
metro = "ny"
project_id = local.project_id
}
resource "equinix_metal_device" "test" {
count = local.device_count
hostname = "test${count.index}"
plan = "c3.small.x86"
metro = "ny"
operating_system = "ubuntu_24_04"
billing_cycle = "hourly"
project_id = local.project_id
}
resource "equinix_metal_device_network_type" "test" {
count = local.device_count
device_id = equinix_metal_device.test[count.index].id
type = "hybrid"
}
resource "equinix_metal_port_vlan_attachment" "test" {
count = local.device_count
device_id = equinix_metal_device_network_type.test[count.index].id
port_name = "eth1"
vlan_vnid = equinix_metal_vlan.test.vxlan
}
Dispositivo híbrido (Bonded)
Este ejemplo crea un dispositivo c3.small y lo pone en [modo de red de enlace híbrido. Observe que el tipo de red predeterminado de layer3 puede utilizarse con enlaces VLAN sin necesidad de reconfigurar los puertos del dispositivo.
resource "equinix_metal_device" "test" {
hostname = "tfacc-device-port-vlan-attachment-test"
plan = "c3.small.x86"
metro = "ny"
operating_system = "ubuntu_24_04"
billing_cycle = "hourly"
project_id = local.project_id
}
resource "equinix_metal_vlan" "test" {
metro = "ny"
project_id = local.project_id
}
resource "equinix_metal_port_vlan_attachment" "test" {
count = local.device_count
device_id = equinix_metal_device.test.id
port_name = "bond0"
vlan_vnid = equinix_metal_vlan.test.vxlan
}