Types de réseaux
Les types de réseaux serveurs, comme Couche 2, Couche 3 et Hybride, sont familiers aux utilisateurs du portail Equinix Metal. Dans ce portail, il est possible de modifier le type de réseau en un seul clic. Pour exploiter ces fonctionnalités dans Terraform, qui s'inspire largement de l'API Equinix Metal, il est essentiel de comprendre que le type de réseau est une chaîne de caractères composite déterminée par une ou plusieurs configurations d'agrégation de liens, d'adressage et d'association de VLAN. Pour modifier le type de réseau, il faut modifier ces propriétés sous-jacentes du ou des ports.
Pour plus de détails, consultez la documentation Equinix Metal sur [Types de configuration réseau.
Ce fournisseur Terraform propose deux façons de définir le type de réseau.
Port en métal
La ressource equinix_metal_port expose toutes les fonctionnalités nécessaires pour affecter le type de réseau d'un périphérique ou d'un appariement de ports.
Voici des exemples d'utilisation de la ressource equinix_metal_port pour configurer différents types de réseaux, en supposant que local.bond0_id soit l'UUID de l'interface de liaison contenant eth1 et local.eth1_id l'UUID de l'interface eth1. Ces UUID peuvent représenter les ports de ressources equinix_metal_device ou de sources de données.
Port de couche 3
La configuration de port par défaut sur les équipements Equinix Metal est la couche 3 (liée). L'exemple suivant illustre l'utilisation de la ressource equinix_metal_port. En pratique, cette liste de compatibilité matérielle (HCL) ne devrait pas être nécessaire ; cependant, elle peut s'avérer utile dans certaines configurations pour vérifier que le mode correct est défini, port par port, pour les ressources ou sources de données equinix_metal_device importées.
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
bonded = true
}
resource "equinix_metal_port" "eth1" {
port_id = local.eth1_id
bonded = true
}
Port de couche 2 non lié
Cet exemple configure un serveur Equinix Metal avec une configuration réseau [couche 2 pure non agrégée et ajoute deux VLAN à son port eth1 ; l'un d'eux est défini comme [VLAN natif. Notez le méta-argument depends_on dans la ressource equinix_metal_port.eth1 et l'attribut reset_on_delete dans la configuration des deux ports. L'argument reset_on_delete rétablira les paramètres par défaut du port (couche 3 agrégée sans VLAN associés) avant la suppression de la ressource Terraform. Il est recommandé d'utiliser l'argument depends_on ici pour s'assurer que les ressources de port avec des VLAN associés soient réinitialisées au préalable, car tous les VLAN doivent être déconnectés avant de réagréger les ports.
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
}
Port de liaison de couche 2
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
layer2 = true
bonded = true
}
Port hybride non relié
resource "equinix_metal_port" "eth1" {
port_id = local.eth1_id
bonded = false
}
Port hybride collé
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
}
Accès aux identifiants de port
La valeur de l'ID du port peut être obtenue à partir d'un equinix_metal_device en utilisant une [for expression.
En supposant qu'un equinix_metal_device existe avec le nom de ressource 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]
}
Type de réseau d'appareils métalliques
La fonction equinix_metal_device_network_type prend un type de réseau nommé avec les paramètres de mode requis et convertit un périphérique vers ce type de réseau. Cette ressource simulait l'interface de type réseau pour les périphériques du portail Equinix Metal. Cette interface a évolué lors de l'introduction de nouveaux types de réseau avec des configurations de ports plus diversifiées.
Lorsque vous utilisez cette ressource, n'oubliez pas:
- Le fonctionnement de cette ressource n'est pas garanti sur les appareils dotés de plus de deux ports Ethernet.
- Il se peut qu'il ne puisse pas exprimer toutes les configurations de ports possibles.
- Des modifications ultérieures à la configuration du réseau peuvent amener cet appareil à détecter des changements qui ne peuvent être résolus sans intervention.
- Les ressources
equinix_metal_device_network_typene doivent pas être utilisées sur les périphériques dont les ports sont contrôlés par des ressourcesequinix_metal_port.
Dispositif hybride (sans lien)
Cet exemple crée un périphérique c3.small et le place en mode réseau hybride (non lié).
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"
}
Périphérique hybride (non lié) avec un VLAN
Cet exemple crée deux périphériques en mode hybride (non lié) et ajoute un VLAN à leurs ports 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
}
Dispositif hybride (lié)
Cet exemple crée un périphérique c3.small et le configure en mode réseau hybride (https://docs.equinix.com/metal/layer2-networking/hybrid-bonded-mode/). Notez que le type de réseau par défaut layer3 peut être utilisé avec des connexions VLAN sans reconfiguration des ports du périphérique.
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
}