Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.equinix.dev/llms.txt

Use this file to discover all available pages before exploring further.

Every recipe below assembles real equinix_* resources. None are toy examples. The full Use Case pages have problem statements, MCP traces, and readiness gates; this page is the Terraform-first index.

Full Use Cases

Private AI inference path

Enterprise origin → Fabric Cloud Router → Lambda / CoreWeave / Crusoe in IAD. ~250 lines of HCL covering the FCR + two equinix_fabric_connection resources + a Fortinet equinix_network_device. Plan-only by default.

Multi-cloud private interconnect

Two FCRs (IAD + DFW) reaching AWS Direct Connect / Azure ExpressRoute / GCP Cloud Interconnect with route filters and route aggregation. Compliance gates wired through equinix-dev preflight --policy compliance.

Distributed AI observability

Three FCRs (IAD + DFW + SV5) with Fabric Streams subscriptions, alert rules, and sampling math that bounds Datadog / Grafana ingestion cost.

Starter recipes (single resource)

For when you want to learn one primitive at a time. These map to the simplest variant of each provider package.
The cheapest single-resource starter. Real equinix_fabric_cloud_router against equinix/equinix ~> 4.15.
terraform {
  required_providers {
    equinix = { source = "equinix/equinix", version = "~> 4.15" }
  }
}

provider "equinix" {
  client_id     = var.equinix_client_id
  client_secret = var.equinix_client_secret
}

resource "equinix_fabric_cloud_router" "starter" {
  name = "starter-fcr-iad"
  type = "XF_ROUTER"
  package  { code = "BASIC" }
  location { metro_code = "DC" }
  account  { account_number = var.equinix_account_number }
  notifications {
    type   = "ALL"
    emails = ["platform@example.com"]
  }
  lifecycle { ignore_changes = [account, change_log] }
}

output "fcr_uuid" {
  value = equinix_fabric_cloud_router.starter.uuid
}
Generated by: equinix-dev add equinix/fabric-cloud-router.
A simple Fabric port-to-AWS-Direct-Connect connection. Skips the Cloud Router (single-tenant deployments where only one cloud is involved).
resource "equinix_fabric_connection" "aws_starter" {
  name      = "starter-aws-iad"
  type      = "EVPL_VC"
  bandwidth = 1000
  redundancy { priority = "PRIMARY" }
  notifications {
    type   = "ALL"
    emails = ["platform@example.com"]
  }
  a_side {
    access_point {
      type = "COLO"
      port { uuid = var.aws_dx_port_uuid }
    }
  }
  z_side {
    access_point {
      type           = "SP"
      profile        { uuid = data.equinix_fabric_service_profiles.aws_iad.data[0].uuid }
      location       { metro_code = "DC" }
      seller_region  = "us-east-1"
    }
  }
}
A Fortinet FortiGate on Network Edge. Pairs with equinix/network-edge-device.
resource "equinix_network_device" "fortigate_starter" {
  name           = "starter-fortigate-iad"
  metro_code     = "DC"
  type_code      = "FG"
  package_code   = "VM02"
  version        = "7.4.4"
  core_count     = 2
  term_length    = 1
  account_number = var.equinix_account_number
  hostname       = "fg-starter-iad"
  notifications  = ["platform@example.com"]
  ssh_key {
    username = "platform"
    key_name = var.fortigate_ssh_key_name
  }
}
Useful for understanding route filter rule syntax in isolation.
resource "equinix_fabric_route_filter" "starter" {
  name        = "rf-starter"
  description = "Permit only RFC1918 customer subnets outbound."
  type        = "BGP_IPv4_PREFIX_FILTER"

  rules = [
    { action = "PERMIT", prefix = "10.0.0.0/8",     ge = 16, le = 24 },
    { action = "PERMIT", prefix = "192.168.0.0/16", ge = 24, le = 24 },
    { action = "DENY",   prefix = "0.0.0.0/0" }
  ]
}
The smallest observability recipe — one subscription, one asset attached.
resource "equinix_fabric_stream_subscription" "starter" {
  name        = "subscription-starter"
  description = "Starter telemetry to Datadog."

  filters {
    type   = "EQUINIX_DEFINED"
    values = ["fabric.connection.*", "fabric.bgp.session.*"]
  }

  sink {
    type = "DATADOG"
    settings = {
      datadog_site = "datadoghq.com"
      api_key_ref  = var.datadog_api_key_secret_ref
    }
  }

  sampling = {
    state_change_rate = 1.0
    metric_rate       = 0.1
  }
}

Composing your own

The pattern that scales: write a thin module that wraps one Use Case’s worth of resources, then module it from per-environment roots.
# private-ai-iad/main.tf  (the per-env root)
module "private_ai_iad" {
  source           = "../modules/private-ai-path"
  metro_code       = "DC"
  gpu_partner      = "lambda"
  router_package   = "BASIC"
  connection_bandwidth = 1000
  fortigate_enabled = true
}

# modules/private-ai-path/main.tf  (the reusable core)
module "fcr" {
  source  = "equinix/fabric-equinix/fabric"
  version = "0.28.1"
  cloud_router_metro_code = var.metro_code
  cloud_router_package    = var.router_package
  # ...
}

resource "equinix_fabric_connection" "fcr_to_partner" {
  # ...
}

resource "equinix_network_device" "fortigate" {
  count = var.fortigate_enabled ? 1 : 0
  # ...
}
This is exactly the shape equinix-dev compile --recipe private-ai (planned) will emit.

Next

State management

Pick the right backend for shared workflows.

FAQs

Common gotchas — provider auth, account numbers, drift.