Ir al contenido principal

Conexión a la nube con Equinix Fabric mediante Terraform

-> NOTA: Consulte la documentación de [Equinix Fabric para más detalles.

Equinix Fabric™ es un servicio de interconexión definido por software que permite a cualquier empresa conectar su propia infraestructura distribuida a la infraestructura de cualquier otra empresa o proveedor de servicios en la plataforma Equinix® a través de una red conectada globalmente. Esta guía se centra principalmente en establecer una interconexión con un proveedor de servicios en la nube y en cómo aprovechar los [módulos de terraformación de conexión de Equinix Fabric, para más detalles y otras opciones puede consultar la sección Referencias más abajo.

Primeros pasos - Habilitar una interconexión

Tanto si está configurando una arquitectura Multi-Cloud como una Hybrid Cloud, el principal recurso que necesitará definir es una equinix_fabric_connection que permitirá a Equinix habilitar una interconexión en su nombre con el proveedor de nube especificado. Sin embargo, hay otros recursos necesarios que deben configurarse tanto en Equinix como en su proveedor de nube para tener la interconexión en funcionamiento. A continuación describimos estos pasos generales utilizando Azure ExpressRoute como ejemplo.

1. Habilitar la interconexión en el proveedor de la nube - Normalmente esto implica crear un enrutador de nube y un activo de interconexión (por ejemplo, el enrutador de Google Cloud y el anexo VLAN, Oracle FastConnect, etc.). Para este ejemplo se requiere un recurso azurerm_express_route_circuit en el que debe especificarse el proveedor de servicios (es decir, Equinix) para generar una clave de emparejamiento válida.

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. Solicite una conexión Equinix Fabric - Desde un [Equinix Fabric Port / [Network Edge Device / [Equinix Service Token / [Equinix Fabric Cloud Router al activo de interconexión virtual de la nube.

En este ejemplo, estableceremos una conexión desde un recurso Cloud Router). Tenga en cuenta que el valor de authorization_key debe ser el de azurerm_express_route_circuit.example.service_key (es decir, la clave de emparejamiento mencionada anteriormente).

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. Configurar BGP en el lado de la nube - Conocido como peering de circuito o interfaz virtual, todos los proveedores de nube ofrecen un recurso para añadir un peer BGP. Algunos detalles comúnmente requeridos que deben proporcionarse son:

  • IP del enrutador del cliente (la IP par de su enrutador de destino a la que el proveedor de la nube debe enviar tráfico).
  • IP del enrutador de la nube (IP par del enrutador virtual para enviar tráfico a la nube).
  • ASN BGP del cliente (el número de sistema autónomo del protocolo de pasarela fronteriza de su par local router).

Para este ejemplo, necesitamos crear un azurerm_express_route_circuit_peering en el que deben definirse los detalles de las conexiones primaria y secundaria.

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. Configurar BGP en el lado Equinix - Por último, el lado del cliente debe configurarse con la misma información. Dado que en este ejemplo el origen de la conexión es un Fabric Cloud Router puede aprovechar el recurso equinix_fabric_routing_protocol para configurar el peering BGP en el router en nube.

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
}

Módulos Terraform - La forma más fácil

Aunque la configuración tendrá un aspecto similar en el lado de Equinix, todos los recursos necesarios para completar la configuración dependerán de cada proveedor de nube. Esto requiere que tenga conocimientos previos sobre cómo configurar la interconexión en cada plataforma. Como alternativa, puede aprovechar los [Equinix Fabric Terraform Modules.

Los módulos Terraform contienen varios recursos que se utilizan juntos en una configuración. Con el módulo [Equinix Fabric Terraform Cloud Router 2 Azure Connection Example Module y el módulo [Equinix Fabric Terraform Routing Protocols Module puede configurar todo lo descrito anteriormente con sólo definir tres recursos.

El siguiente código es todo lo que necesita para reemplazar completamente el ejemplo anterior:

# 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"
}
  • Ver [Ejemplos de conectividad de Equinix en la página de módulos Fabric para obtener información sobre más casos de uso de Fabric compatibles con los módulos Terraform de Fabric

Si no encuentra uno para su proveedor de nube puede abrir un ticket en el [repositorio github con su solicitud.

Referencias

  • Consulte las [Guías prácticas de la API para obtener más información detalles sobre los requisitos de cada proveedor de servicios en la nube.
  • Compruebe los [proveedores disponibles en Plataforma Equinix® para encontrar el proveedor de servicios que necesita.
¿Fue útil esta página?