Skip to main content

Connexion au cloud avec Equinix Fabric via Terraform

-> NOTE : Consultez la documentation [Equinix Fabric pour plus de détails.

Equinix Fabric™ est un service d'interconnexion défini par logiciel qui permet à toute entreprise de connecter sa propre infrastructure distribuée à l'infrastructure ou au fournisseur de services de n'importe quelle autre entreprise sur la plateforme Equinix® à travers un réseau connecté à l'échelle mondiale. Ce guide se concentre principalement sur l'établissement d'une interconnexion avec un fournisseur de services cloud et sur la manière de tirer parti des [modules de terraformation de connexion Equinix Fabric, pour plus de détails et d'autres options, vous pouvez consulter la section Références ci-dessous.

Pour commencer - Permettre une interconnexion

Que vous mettiez en place une architecture multi-cloud ou de cloud hybride, la principale ressource que vous devrez définir est une equinix_fabric_connection qui permettra à Equinix d'activer une interconnexion en votre nom avec le fournisseur de cloud spécifié. Cependant, d'autres ressources requises doivent être configurées à la fois sur Equinix et sur votre fournisseur de cloud pour que l'interconnexion soit opérationnelle. Nous décrivons ci-dessous ces étapes générales en prenant l'exemple d'Azure ExpressRoute.

1. Activation de l'interconnexion dans le fournisseur de cloud - Habituellement, cela implique la création d'un routeur de cloud et d'un actif d'interconnexion (par exemple, Google Cloud Router et attachement VLAN, Oracle FastConnect, etc. Pour cet exemple, il faut une ressource azurerm_express_route_circuit dans laquelle le fournisseur de services (c'est-à-dire Equinix) doit être spécifié afin de générer une clé d'appariement valide.

provider "azurerm" {
features {}
}

resource "azurerm_express_route_circuit" "example" {
name = "my-circuit"
resource_group_name = "my-resource-group"
location = "Germany West Central"
service_provider_name = "Equinix"
peering_location = "Frankfurt"
bandwidth_in_mbps = 100
sku {
tier = "Premium"
family = "UnlimitedData"
}
allow_classic_operations = false
}

2. Demander une connexion Equinix Fabric - Depuis un [Equinix Fabric Port / [Network Edge Device / [Equinix Service Token / [Equinix Fabric Cloud Router vers la ressource d'interconnexion virtuelle du nuage.

Dans cet exemple, nous allons établir une connexion à partir d'une ressource Cloud Router). Notez que la valeur de authorization_key doit être azurerm_express_route_circuit.example.service_key (c'est-à-dire la clé d'appariement mentionnée ci-dessus).

provider "equinix" {}

data "equinix_fabric_service_profile" "azure" {
name = "Azure ExpressRoute"
filter {
property = "/name"
operator = "="
values = ["Azure ExpressRoute"]
}
}

resource "equinix_fabric_connection" "fcr2azure"{
name = "ConnectionName"
type = "IP_VC"
notifications{
type = "ALL"
emails = ["example@equinix.com","test1@equinix.com"]
}
bandwidth = azurerm_express_route_circuit.example.bandwidth_in_mbps
order {
purchase_order_number = "1-323292"
}
a_side {
access_point {
type = "CLOUD_ROUTER"
router {
uuid = "<cloud_router_uuid>"
}
}
}
z_side {
access_point {
type = "SP"
authentication_key = azurerm_express_route_circuit.example.service_key
peering_type = "PRIVATE"
profile {
type = "L2_PROFILE"
uuid = data.equinix_fabric_service_profile.azure.data.0.id
}
location {
metro_code = "SV"
}
}
}
}

3. Configurer BGP dans le nuage - Connu sous le nom de circuit peering ou d'interface virtuelle, tous les fournisseurs de nuage offrent une ressource pour ajouter un pair BGP. Les détails à fournir sont généralement les suivants :

  • Customer router IP (l'IP de votre routeur de destination vers laquelle le fournisseur de cloud computing doit envoyer des données) trafic).
  • IP du routeur cloud (IP du routeur virtuel pour envoyer le trafic vers le cloud).
  • Customer BGP ASN (le numéro de système autonome du protocole Border Gateway de votre homologue sur site) routeur).

Pour cet exemple, nous devons créer un azurerm_express_route_circuit_peering dans lequel les détails des connexions primaires et secondaires doivent être définis.

resource "azurerm_express_route_circuit_peering" "example" {
express_route_circuit_name = azurerm_express_route_circuit.example.name
resource_group_name = "my-resource-group"

peering_type = "AzurePrivatePeering"
peer_asn = 100
primary_peer_address_prefix = "123.0.0.0/30"
secondary_peer_address_prefix = "123.0.0.4/30"
vlan_id = 300
bandwidth_in_mpbs = 50
}

4. Configurez BGP du côté d'Equinix - Enfin, le côté client doit être configuré avec les mêmes informations. Étant donné que dans cet exemple l'origine de la connexion est un Fabric Cloud Router, vous pouvez profiter de la ressource equinix_fabric_routing_protocol pour configurer l'appairage BGP dans le routeur cloud.

resource "equinix_fabric_routing_protocol" "direct"{
connection_uuid = equinix_fabric_connection.fcr2azure.id
type = "DIRECT"
name = "direct_rp"
direct_ipv4 {
equinix_iface_ip = "190.1.1.1/30"
}
direct_ipv6{
equinix_iface_ip = "190::1:1/126"
}
}

resource "equinix_fabric_routing_protocol" "bgp" {
depends_on = [
equinix_fabric_routing_protocol.direct
]
connection_uuid = equinix_fabric_connection.fcr2azure.id
type = "BGP"
name = "bgp_rp"
bgp_ipv4 {
customer_peer_ip = "190.1.1.2"
enabled = true
}
bgp_ipv6 {
customer_peer_ip = "190::1:2"
enabled = true
}
customer_asn = 4532
}

Modules Terraform - La méthode la plus simple

Bien que la configuration soit similaire du côté d'Equinix, toutes les ressources requises pour compléter la configuration dépendent de chaque fournisseur de cloud. Vous devez donc savoir au préalable comment configurer l'interconnexion sur chaque plateforme. Vous pouvez également tirer parti des [modules Equinix Fabric Terraform.

Avec le [module Equinix Fabric Terraform Cloud Router 2 Azure Connection Example et le [module Equinix Fabric Terraform Routing Protocols, vous pouvez configurer tout ce qui est décrit ci-dessus en définissant simplement trois ressources.

Le code ci-dessous est tout ce dont vous avez besoin pour remplacer complètement l'exemple ci-dessus :

# main.tf
provider "equinix" {}

provider "azurerm" {}

module "equinix-fabric-connection-azure" {
source = "equinix/fabric/equinix//examples/cloud-router-2-azure-connection"


# Connection Details
connection_name = "fcr_2_azure"
connection_type = "IP_VC"
notifications_type = "ALL"
notifications_emails = ["example@equinix.com","test1@equinix.com"]
purchase_order_number = "1-323292"
bandwidth = 50
aside_ap_type = "CLOUD_ROUTER"
aside_fcr_uuid = "<Primary Fabric Cloud router UUID>"
zside_ap_type = "SP"
zside_ap_profile_type = "L2_PROFILE"
zside_location = "SV"
zside_peering_type = "PRIVATE"
zside_fabric_sp_name = "Azure ExpressRoute"

# Azure details
azure_client_id = "<Azure Client Id>"
azure_client_secret = "<Azure Client Secret Value>"
azure_tenant_id = "<Azure Tenant Id>"
azure_subscription_id = "<Azure Subscription Id>"
azure_resource_name = "my-resource-group"
azure_location = "West US 2"
azure_service_key_name = "Test_Azure_Key"
azure_service_provider_name = "<Service Provider Name>"
azure_peering_location = "Silicon Valley Test"
azure_tier = "Standard"
azure_family = "UnlimitedData"
azure_environment = "PROD"
}

resource "azurerm_express_route_circuit_peering" "example" {
express_route_circuit_name = module.equinix-fabric-connection-azure.azurerm_express_route_circuit_name
resource_group_name = "my-resource-group"

peering_type = "AzurePrivatePeering"
peer_asn = 100
primary_peer_address_prefix = "123.0.0.0/30"
secondary_peer_address_prefix = "123.0.0.4/30"
vlan_id = 300
bandwidth_in_mpbs = 50
}

module "routing_protocols" {
source = "equinix/fabric/equinix//modules/routing-protocols"

connection_uuid = module.equinix-fabric-connection-azure.module_output

# Direct RP Details
direct_rp_name = "direct_rp"
direct_equinix_ipv4_ip = "190.1.1.1/30"
direct_equinix_ipv6_ip = "190::1:1/126"

# BGP RP Details
bgp_rp_name = "bgp_rp"
bgp_customer_asn = 4532
bgp_customer_peer_ipv4 = "190.1.1.2"
bgp_enabled_ipv4 = true
bgp_customer_peer_ipv6 = var.bgp_customer_peer_ipv6
bgp_enabled_ipv6 = "190::1:2"
}
  • Voir [Exemples de connectivité Equinix sur la page des modules Fabric pour en savoir plus sur d'autres cas d'utilisation de Fabric pris en charge par les modules Fabric Terraform

Si vous n'en trouvez pas pour votre fournisseur de cloud, vous pouvez ouvrir un ticket dans le [dépôt github avec votre demande.

Références

  • Consultez les [guides pratiques de l'API pour plus d'informations. détails sur les exigences de chaque fournisseur de services en nuage.
  • Vérifiez les [fournisseurs disponibles sur Platform Equinix® pour trouver le fournisseur de services dont vous avez besoin.
Cette page vous a-t-elle été utile ?