Connexion au nuage avec Equinix Fabric par Terraform
-> NOTE: Voir le [Tissu Equinix Pour plus de détails, veuillez consulter la documentation.
Equinix Fabric™ est un service d'interconnexion défini par logiciel qui permet à toute entreprise de se connecter. sa propre infrastructure distribuée à l'infrastructure ou au fournisseur de services de toute autre entreprise sur Plateforme Equinix® déployée sur un réseau mondial. Ce guide se concentre principalement sur la mise en place d'une plateforme Equinix® au sein d'un réseau mondial. interconnexion avec un fournisseur de services infonuagiques et comment en tirer parti [Modules Terraform de connexion Equinix Fabric, Pour plus de détails et d'autres options, vous pouvez consulter la section Références ci-dessous.
Premiers pas - Activation d'une interconnexion
Que vous mettiez en place une architecture multinuage ou cloud hybride, la principale ressource dont vous aurez besoin sera… il faut définir une equinix_fabric_connection qui permettra à Equinix d'établir une interconnexion en votre nom avec le fournisseur de nuage spécifié. Cependant, d'autres ressources sont nécessaires et doivent être configurées à la fois sur Equinix et sur votre cloud. Le fournisseur doit mettre l'interconnexion en service. Nous décrivons ci-dessous ces étapes générales. Azure ExpressRoute à titre d'exemple.
1. Activer l'interconnexion chez le fournisseur de nuage - Cela implique généralement la création d'un routeur infonuagique
et un actif d'interconnexion (par exemple, Google Cloud Router et la connexion VLAN, Oracle FastConnect,
etc.). Pour cet exemple, un azurerm_express_route_circuit est requis.
ressource dans laquelle le fournisseur de services (c.-à-d. Equinix) doit être spécifié afin de générer une
Clé d'appairage 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 - À partir d'un [Port de structure Equinix / [Périphérique de périphérie de réseau / [Jeton de service Equinix / Routeur en nuage Equinix Fabric (https://docs.equinix.com/fabric-cloud-router/) à la ressource d'interconnexion virtuelle du cloud.
Dans cet exemple, nous allons établir une connexion à partir d'un routeur cloud.
ressource). Notez que la valeur de authorization_key doit être la azurerm_express_route_circuit.example.service_key
(c'est-à-dire la clé d'appariement mentionnée ci-haut).
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 côté cloud - Aussi appelé pairage de circuits ou interface virtuelle, tout le nuage Les fournisseurs proposent une ressource pour ajouter un pair BGP. Voici quelques informations généralement requises: sont fournis:
- Adresse IP du routeur client (adresse IP du routeur de destination auquel le fournisseur de nuage doit envoyer) circulation).
- Adresse IP du routeur infonuagique (adresse IP du routeur virtuel homologue pour envoyer le trafic vers le nuage).
- Numéro de système autonome BGP du client (Border Gateway Protocol Autonomous System Numéro de votre homologue sur place) routeur).
Pour cet exemple, on doit créer un azurerm_express_route_circuit_peering où les détails
Les connexions primaires et secondaires doivent être définies.
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. Configurer BGP côté Equinix - Finalement, le côté client doit être configuré de la même manière.
information. Étant donné que dans cet exemple l'origine de la connexion est un routeur Fabric Cloud, vous pouvez
Utilisez la ressource equinix_fabric_routing_protocol pour configurer l'appariement BGP dans le cloud.
routeur.
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 solution la plus simple
Bien que la configuration soit similaire côté Equinix, toutes les ressources nécessaires à La configuration finale dépend de chaque fournisseur de cloud. Cela nécessite une configuration préalable. des connaissances sur la configuration de l'interconnexion sur chaque plateforme. Vous pouvez aussi opter pour une formation. avantage des [modules Terraform d'Equinix Fabric.
Les modules Terraform conteneurisent plusieurs ressources utilisées ensemble dans une configuration. Avec le module d'exemple de connexion Azure [Equinix Fabric Terraform Cloud Router 2 et le [module de protocoles de routage Terraform d'Equinix Fabric Vous pouvez configurer tout ce qui a été 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 plus d'informations sur les cas d'utilisation supplémentaires de Fabric pris en charge par les modules Terraform de Fabric
Si vous n'en trouvez pas pour votre fournisseur infonuagique, vous pouvez ouvrir un billet dans le [dépôt GitHub. avec votre demande.
Références
- Consultez les [guides d'utilisation de l'API pour plus d'informations. détails sur les exigences de chaque fournisseur de services cloud.
- Vérifiez les [fournisseurs disponibles sur la plateforme Equinix® pour trouver le fournisseur de services dont vous avez besoin.