本文へスキップ

~>非推奨のお知らせ Equinix Metalは、2026年6月30日 でサポートを終了します。すべてのMetalリソースは、このプロバイダのバージョン5.0.0で削除されます。廃止までの継続利用には、このプロバイダのバージョン4.xをご利用ください。詳細は https://docs.equinix.com/metal/ をご覧ください。

equinix_metal_bgp_session(リソース)

Equinix Metal HostでBGPセッションを管理するためのリソースを提供します。詳しくは[Equinix Metal BGP documentationをご覧ください。

プロジェクトでBGPコンフィグを有効にする必要があります。

BGPセッションは、BIRDまたは他のBGPルーティングデーモンが動作するデバイスにリンクされている必要があり、このデバイスはセッション経由でEquinix Metalのアップストリームルーターへのルート広告を制御します。

使用例

次のHCLは、Equinix MetalのBGP機能の使用方法を示しています。内容は次のとおりです。

  • 新しいBGP対応プロジェクトでデバイスをスポーン
  • デバイスと同じ場所のプロジェクトでフローティングIPv4アドレスを予約します。
  • フローティングIPv4をデバイスに静的に設定します。
  • デバイスに BIRD をインストールして設定し、フローティング IPv4 をローカルにアナウンスします。
locals {
bgp_password = "955dB0b81Ef"
project_id = "<UUID_of_your_project>"
}

# you need to enable BGP config for the project. If you decide to create new
# project, you can use the bgp_config section to enable BGP.
# resource "equinix_metal_project" "test" {
# name = "testpro"
# bgp_config {
# deployment_type = "local"
# md5 = local.bgp_password
# asn = 65000
# }
# }

resource "equinix_metal_reserved_ip_block" "addr" {
project_id = local.project_id
metro = "ny"
quantity = 1
}

resource "equinix_metal_device" "test" {
hostname = "terraform-test-bgp-sesh"
plan = "c3.small.x86"
metro = ["ny"]
operating_system = "ubuntu_24_04"
billing_cycle = "hourly"
project_id = local.project_id
}

resource "equinix_metal_bgp_session" "test" {
device_id = equinix_metal_device.test.id
address_family = "ipv4"
}


data "template_file" "interface_lo0" {
template = <<EOF
auto lo:0
iface lo:0 inet static
address $${floating_ip}
netmask $${floating_netmask}
EOF

vars = {
floating_ip = equinix_metal_reserved_ip_block.addr.address
floating_netmask = equinix_metal_reserved_ip_block.addr.netmask
}
}

data "template_file" "bird_conf_template" {

template = <<EOF
filter equinix_metal_bgp {
if net = $${floating_ip}/$${floating_cidr} then accept;
}
router id $${private_ipv4};
protocol direct {
interface "lo";
}
protocol kernel {
scan time 10;
persist;
import all;
export all;
}
protocol device {
scan time 10;
}
protocol bgp {
export filter equinix_metal_bgp;
local as 65000;
neighbor $${gateway_ip} as 65530;
password "$${bgp_password;
}
EOF

vars = {
floating_ip = equinix_metal_reserved_ip_block.addr.address
floating_cidr = equinix_metal_reserved_ip_block.addr.cidr
private_ipv4 = equinix_metal_device.test.network.2.address
gateway_ip = equinix_metal_device.test.network.2.gateway
bgp_password = local.bgp_password
}
}

resource "null_resource" "configure_bird" {

connection {
type = "ssh"
host = equinix_metal_device.test.access_public_ipv4
private_key = file("/home/tomk/keys/tkarasek_key.pem")
agent = false
}

provisioner "remote-exec" {
inline = [
"apt-get install bird",
"mv /etc/bird/bird.conf /etc/bird/bird.conf.old",
]
}

triggers = {
template = data.template_file.bird_conf_template.rendered
template = data.template_file.interface_lo0.rendered
}

provisioner "file" {
content = data.template_file.bird_conf_template.rendered
destination = "/etc/bird/bird.conf"
}

provisioner "file" {
content = data.template_file.interface_lo0.rendered
destination = "/etc/network/interfaces.d/lo0"
}

provisioner "remote-exec" {
inline = [
"sysctl net.ipv4.ip_forward=1",
"grep /etc/network/interfaces.d /etc/network/interfaces || echo 'source /etc/network/interfaces.d/*' >> /etc/network/interfaces",
"ifup lo:0",
"service bird restart",
]
}
}

引数リファレンス

以下の引数をサポートしています:

  • device_id - (必須)デバイスの ID。
  • address_family - (必須) ipv4またはipv6.
  • default_route - (オプション) デフォルトのルート ポリシーを設定するブール値フラグ。既定では False です。

属性リファレンス

上記のすべての引数に加えて、以下の属性がエクスポートされます:

  • status:セッションのステータス - upまたはdown
このページは役に立ちましたか?