Types de réseaux
Les types de réseaux de serveurs, tels que la couche 2, la couche 3 et l'hybride, peuvent être familiers aux utilisateurs du portail Metal d'Equinix. Dans le portail, vous pouvez changer de type de réseau en cliquant sur l'interface utilisateur. Pour tirer parti de ces fonctionnalités dans Terraform, qui suit de près l'API Equinix Metal, il est important de comprendre que le type de réseau est une valeur de chaîne composite déterminée par une ou plusieurs configurations de liaison de port, d'adressage et d'attachement VLAN. Pour modifier le type de réseau, vous devez modifier ces propriétés sous-jacentes du ou des ports.
Pour plus de détails, consultez la documentation d'Equinix Metal sur les [Types de configuration réseau.
Ce fournisseur Terraform propose deux façons de définir le type de réseau.
Metal Port
La ressource equinix_metal_port expose toutes les caractéristiques nécessaires pour affecter le type de réseau d'un dispositif ou d'un appairage de port.
Vous trouverez ci-dessous des exemples de la manière dont la ressource equinix_metal_port peut être utilisée pour configurer différents types de réseaux, en supposant que local.bond0_id est l'UUID de l'interface de liaison contenant eth1 et local.eth1_id est l'UUID de l'interface eth1. Celles-ci pourraient représenter les ports des ressources equinix_metal_device ou des sources de données.
Port de couche 3
La couche 3 (Bonded) est la configuration de port par défaut sur les dispositifs Equinix Metal. Ce qui suit est fourni pour illustrer l'utilisation de la ressource equinix_metal_port. Ce HCL ne devrait pas être nécessaire dans la pratique, mais il peut être utile dans certaines configurations pour s'assurer que le mode correct est défini, port par port, sur 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 non lié de la couche 2
Cet exemple configure un serveur Metal d'Equinix avec une configuration réseau [pure layer 2 unbonded et ajoute deux VLAN à son port eth1 ; l'un d'eux est défini comme [VLAN natif. Remarquez 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'attribut reset_on_delete rétablira les paramètres par défaut du port (couche 3 liée sans VLAN) avant la suppression/destruction de la ressource terraform. Il est recommandé d'utiliser l'argument depends_on ici pour s'assurer que les ressources du port avec les VLANs attachés sont réinitialisés en premier, puisque tous les VLANs doivent être détachés avant de relier 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 Bonded de la couche 2
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
layer2 = true
bonded = true
}
Hybrid Unbonded Port
resource "equinix_metal_port" "eth1" {
port_id = local.eth1_id
bonded = false
}
Hybrid Bonded Port
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 à l'aide d'une [expression for.
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]
}
Metal Device Network Type
La ressource equinix_metal_device_network_type prend un type de réseau nommé avec tous les paramètres de mode requis et convertit un périphérique au type de réseau nommé. Cette ressource simulait l'interface de type de réseau pour les dispositifs dans le portail Metal d'Equinix. Cette interface a changé lorsque des types de réseau supplémentaires ont été introduits avec des configurations de port plus variées.
Lorsque vous utilisez cette ressource, gardez à l'esprit
- le fonctionnement de cette ressource n'est pas garanti pour les appareils dotés de plus de deux ports Ethernet.
- il se peut qu'il ne soit pas en mesure d'exprimer toutes les configurations de port possibles
- des modifications ultérieures de la configuration du réseau peuvent amener cet appareil à détecter des changements qui ne peuvent pas être réconciliés sans intervention.
- Les ressources
equinix_metal_device_network_typene doivent pas être utilisées sur des appareils dont les ports sont contrôlés par des ressourcesequinix_metal_port.
Dispositif hybride (non lié)
Cet exemple crée un périphérique c3.small et le met 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"
}
Dispositif hybride (non lié) avec un VLAN
Cet exemple crée deux périphériques en mode [hybride (non lié)] (https://docs.equinix.com/metal/layer2-networking/hybrid-unbonded-mode/) 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 (Bonded)
Cet exemple crée un périphérique c3.small et le met en mode [hybrid-bonded network mode. Vous remarquerez que le type de réseau par défaut layer3 peut être utilisé avec des attachements VLAN sans reconfigurer les ports de l'appareil.
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
}