ネットワークの種類
レイヤ2、レイヤ3、ハイブリッドなどのサーバーネットワークの種類は、Equinix Metalポータルのユーザーにとって馴染み深いものです。ポータルでは、UIをクリックするだけでネットワークタイプを切り替えることができます。Equinix Metal APIに忠実に従ったTerraformでこれらの機能を利用するには、ネットワークタイプは1つ以上のポートボンディング、アドレス指定、VLANアタッチメント設定によって決まる複合文字列値であることを理解することが重要です。ネットワークタイプを変更するには、ポートの基本プロパティを変更する必要があります。
詳細は、Equinix Metalのドキュメント「Network Configuration Types」(https://docs.equinix.com/metal/layer2-networking/overview#network-configuration-types)をご覧ください。
このTerraformプロバイダは、ネットワークタイプを定義する2つの方法を提供します。
メタルポート
equinix_metal_port リソースは、デバイスまたはポート ペアリングのネットワーク タイプに影響を与えるために必要なすべての機能を公開します。
以下は、local.bond0_idがeth1を含むボンドインターフェイスのUUIDで、local.eth1_idがeth1インターフェイスのUUIDであると仮定して、equinix_metal_portリソースを使用してさまざまなネットワークタイプを設定する方法の例です。 これらはequinix_metal_deviceリソースまたはデータソースのポートを表すことができます。
レイヤ3ポート
レイヤ3(Bonded)は、Equinix Metalデバイスのデフォルトのポート構成です。以下はequinix_metal_portリソースの使用方法を説明するためのものです。このHCLは実際には必要ありませんが、インポートされたequinix_metal_deviceリソースやデータソースでポートごとに正しいモードが設定されていることを確認するために、一部の構成で役立つ場合があります。
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
bonded = true
}
resource "equinix_metal_port" "eth1" {
port_id = local.eth1_id
bonded = true
}
レイヤ2アンボンドポート
この例では、Equinix Metalサーバーをピュアレイヤー2アンボンドネットワーク構成で設定し、そのeth1ポートに2つのVLANを追加します。equinix_metal_port.eth1 リソースの depends_on メタ引数と両方のポートのコンフィギュレーションの reset_on_delete 属性に注意してください。reset_on_delete は、terraform リソースの削除/破棄の前に、ポートをデフォルト設定(VLAN がアタッチされていないボンディングされたレイヤ 3)に設定します。ポートを再ボンドする前にすべての VLAN を切り離す必要があるため、VLAN がアタッチされているポートリソースが最初にリセットされるように、ここで depends_on 引数を使用することをお勧めします。
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
}
レイヤ2ボンデッドポート
resource "equinix_metal_port" "bond0" {
port_id = local.bond0_id
layer2 = true
bonded = true
}
ハイブリッド・アンボンド・ポート
resource "equinix_metal_port" "eth1" {
port_id = local.eth1_id
bonded = false
}
ハイブリッド・ボンド・ポート
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
}
ポートIDへのアクセス
ポート ID 値は、for 式 を使用して equinix_metal_device から取得できます。
リソース名testでequinix_metal_deviceが存在すると仮定します:
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]
}
メタルデバイス ネットワークタイプ
equinix_metal_device_network_type は、任意のモード必須パラメータを持つ名前付きネットワーク タイプを取り、デバイスを名前付きネットワーク タイプに変換します。 このリソースは、Equinix Metalポータルのデバイスのネットワークタイプインターフェースをシミュレートしたものです。このインターフェースは、より多様なポート構成を持つネットワークタイプが追加された際に変更されました。
このリソースを使用する際は、以下の点に注意してください:
- このリソースは、2つ以上のイーサネットポートを持つデバイスでの動作を保証するものではありません。
- 可能なすべてのポート構成を表現できるとは限りません。
- ネットワーク設定に変更を加えると、このデバイスは、介入なしでは調整できない変更を検出することがあります。
equinix_metal_device_network_typeリソースはequinix_metal_portリソースでポートを制御しているデバイスでは使用しないでください。
ハイブリッド(アンボンド)デバイス
この例では、1つのc3.smallデバイスを作成し、ハイブリッド(アンボンド)ネットワークモードにします。
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"
}
VLAN付きハイブリッド(アンボンド)デバイス
この例では、ハイブリッド(アンボンド)モード で 2 つのデバイスを作成し、それらの eth1 ポートに VLAN を追加します。
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
}
ハイブリッド(ボンディング)デバイス
この例では、c3.small デバイスを 1 つ作成し、[hybrid-bonded network mode に設定します。デフォルトのネットワークタイプlayer3はデバイスのポートを再設定することなく、VLANアタッチメントで使用できることに注意してください。
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
}