Ir al contenido principal

Migración de Fabric v3 (ecx) a Fabric v4 (fabric)

En diciembre de 2023, las API Fabric v3 quedaron obsoletas y llegarán al final de su vida útil (EOL) en junio de 2024. Los ecx Terraform Resources están construidos sobre esas APIs y también alcanzarán el EOL en junio de 2024. Si los está utilizando esta guía le ayudará a migrar a los fabric Terraform Resources que están construidos con las APIs Fabric v4.

Los recursos de Fabric v3 son las siguientes fuentes y recursos de datos:

Fuentes de datos:

  • data "equinix_ecx_l2_sellerprofile"
  • data "equinix_ecx_l2_sellerprofiles"
  • data "equinix_ecx_port"

Recursos:

  • resource "equinix_ecx_l2_connection"
  • resource "equinix_ecx_l2_connection_accepter"
  • resource "equinix_ecx_l2_service_profile"

Están siendo sustituidos por la familia de recursos con el prefijo equinix_fabric_.

Asignación de ECX a Fabric

Todos los recursos ECX están limitados a conexiones de capa 2. Esto se debe a las limitadas posibilidades que existían en la época de Fabric v3. Las API de Fabric v4 permiten Conexiones de Capa 2 y Capa 3.

Lo que esto significa es que los recursos Fabric son más robustos, por lo que no existe un mapeo exacto uno a uno, sino que los tipos de conexión ECX son ahora un subconjunto de un recurso Fabric.

Asignaciones de fuentes de datos:

  • Utilice data "equinix_fabric_service_profile" en lugar de data "equinix_ecx_sellerprofile"
  • Utilice data "equinix_fabric_service_profiles" en lugar de data "equinix_ecx_sellerprofiles"
  • Utilice data "equinix_fabric_port" en lugar de data "equinix_ecx_port"

Los cambios en la plantilla serían:

Perfil del vendedor:

data "equinix_ecx_l2_sellerprofile" "aws" {
name = "AWS Direct Connect"
}

output "id" {
value = data.equinix_ecx_l2_sellerprofile.aws.id
}

a

data "equinix_fabric_service_profile" "aws" {
uuid = "<uuid_of_aws_service_profile>"
}

output "id" {
value = data.equinix_fabric_service_profile.aws.id
}

o si aún desea buscar por nombre utilizaría la fuente de datos equinix_fabric_service_profiles.

data "equinix_fabric_service_profiles" "aws" {
filter {
property = "/name"
operator = "="
values = ["AWS Direct Connect"]
}
}

output "id" {
value = data.equinix_fabric_service_profile.aws.data.0.id
}

Perfiles de vendedores:

data "equinix_ecx_l2_sellerprofiles" "aws" {
organization_global_name = "AWS"
}

a

data "equinix_fabric_service_profiles" "aws" {
filter {
property = "/name"
operator = "="
values = ["AWS"]
}
}

Puerto:

data "equinix_ecx_port" "tf-pri-dot1q" {
name = "sit-001-CX-NY5-NL-Dot1q-BO-10G-PRI-JP-157"
}

output "id" {
value = data.equinix_ecx_port.tf-pri-dot1q.id
}

a

data "equinix_fabric_ports" "tf-pri-dot1q" {
filters {
name = "sit-001-CX-NY5-NL-Dot1q-BO-10G-PRI-JP-157"
}
}

output "id" {
value = data.equinix_fabric_ports.tf-pri-dot1q.0.id
}

Asignación de recursos

  • Utilice resource "equinix_fabric_connection" en lugar de resource "equinix_ecx_l2_connection"
  • resource "equinix_ecx_l2_connection_acceptor está obsoleto.
    • Añada su clave secreta de AWS y su clave de acceso de AWS a la propiedad additional_info en resource "equinix_fabric_connection" para AWS
    • O utilice en su lugar el recurso equivalente aws_dx_connection_confirmation en el proveedor 'AWS'".
  • Utilice resource "equinix_fabric_service_profile" en lugar de resource "equinix_ecx_l2_service_profile"

Cambios en la plantilla

Conexión L2:

resource "equinix_ecx_l2_connection" "port-2-aws" {
name = "tf-aws"
profile_uuid = "<aws_service_profile_uuid>"
speed = 200
speed_unit = "MB"
notifications = ["marry@equinix.com", "john@equinix.com"]
port_uuid = "<port_uuid>"
vlan_stag = 777
vlan_ctag = 1000
seller_region = "us-west-1"
seller_metro_code = "SV"
authorization_key = "<aws_account_id>"
}

a

resource "equinix_fabric_connection" "port2aws" {
name = "tf-aws"
type = "EVPL_VC" # L2 Connection
notifications {
type = "ALL"
emails = ["marry@equinix.com", "john@equinix.com"]
}
bandwidth = 200 # Speed unit is defaulted to MB
redundancy { priority= "PRIMARY" }
order {
purchase_order_number= "1-323929"
}
a_side {
access_point {
type= "COLO"
port {
uuid = "<port_uuid>"
}
link_protocol {
type = "QINQ"
vlan_s_tag = "777"
vlan_c_tag = "1000"
}
}
}
z_side {
access_point {
type = "SP"
authentication_key = "<aws_account_id>"
seller_region = "us-west-1"
profile {
type = "L2_PROFILE"
uuid = "<aws_service_profile_uuid>"
}
location {
metro_code = "SV"
}
}
}

additional_info = [
{ key = "accessKey", value = "<aws_access_key>" },
{ key = "secretKey", value = "<aws_secret_key>" }
]
}

Perfil del servicio:

resource "equinix_ecx_l2_serviceprofile" "private-profile" {
name = "private-profile"
description = "my private profile"
connection_name_label = "Connection"
bandwidth_threshold_notifications = ["John.Doe@example.com", "Marry.Doe@example.com"]
profile_statuschange_notifications = ["John.Doe@example.com", "Marry.Doe@example.com"]
vc_statuschange_notifications = ["John.Doe@example.com", "Marry.Doe@example.com"]
private = true
private_user_emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
features {
allow_remote_connections = true
test_profile = false
}
port {
uuid = "a867f685-422f-22f7-6de0-320a5c00abdd"
metro_code = "NY"
}
port {
uuid = "a867f685-4231-2317-6de0-320a5c00abdd"
metro_code = "NY"
}
speed_band {
speed = 1000
speed_unit = "MB"
}
speed_band {
speed = 500
speed_unit = "MB"
}
speed_band {
speed = 100
speed_unit = "MB"
}
}

a

resource "equinix_fabric_service_profile" "private-profile" {
name = "private-profile"
description = "my private profile"
type = "L2_PROFILE" # Need to specify to make it an Layer 2 Profile
visibility = "PRIVATE"
notifications = [
{
emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
type = "BANDWIDTH_ALERT"
},
{
emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
type = "PROFILE_LIFECYCLE"
},
{
emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
type = "CONNECTION_APPROVAL"
}
]
allowed_emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
ports = [
{
uuid = "c791f8cb-5cc9-cc90-8ce0-306a5c00a4ee"
type = "XF_PORT"
},
{
uuid = "a867f685-4231-2317-6de0-320a5c00abdd"
type = "XF_PORT"
}
]

access_point_type_configs {
type = "COLO"
allow_remote_connections = true
connection_label = "Connection"
supported_bandwidths = [ 100, 500, 1000 ]
}
}

Migrar el estado de Terraform

Una vez que hemos cambiado la plantilla en consecuencia, podemos eliminar los antiguos recursos equinix_ecx_ del estado de Terraform e importar los nuevos como recursos equinix_fabric_ por sus UUID.

En los comandos terraformar estado e importar, utilizamos el tipo de recurso y el nombre, separados por puntos:

terraform state rm equinix_ecx_l2_connection.example
terraform import equinix_fabric_connection.example <resource_uuid>

Después de esto, nuestras plantillas deberían estar en concordancia con el estado de Terraform y con los recursos ascendentes en Equinix Fabric. Podemos verificar la migración ejecutando terraform plan, debería mostrar que la infraestructura está actualizada.

¿Fue útil esta página?