Ir para o conteúdo principal

Migrando do Fabric v3 (ecx) para o Fabric v4 (fabric)

Em dezembro de 2023, as APIs do Fabric v3 foram descontinuadas e chegarão a Fim da vida útil (EOL) em junho de 2024. Os recursos do Terraform ecx são construídos com base nesses. APIs e também alcance ao fim da vida útil em junho de 2024. Se você as estiver usando, este guia pode ajudar. ajudará você a migrar para os fabric Recursos Terraform que são construídos com as APIs do Fabric v4.

Os recursos do Fabric v3 são as seguintes fontes de dados e recursos:

Fontes de dados:

  • 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"

Eles estão sendo substituídos pela família de recursos com o Prefixo equinix_fabric_.

Mapeamento de ECX para Fabric

Todos os recursos ECX estão limitados a conexões de Camada 2. Isso se deve a a quantidade limitada de possibilidades que existiam na época do Fabric v3. As APIs do Fabric v4 permitem conexões de Camada 2 e Camada 3.

Isso significa que os recursos do Fabric são mais robustos, então não há não há um mapeamento exato de um para um, mas sim que os tipos de conexão ECX agora são um subconjunto de um recurso do Fabric .

Mapeamento de fontes de dados:

  • Use data "equinix_fabric_service_profile" em vez de data "equinix_ecx_sellerprofile"
  • Use data "equinix_fabric_service_profiles" em vez de data "equinix_ecx_sellerprofiles"
  • Use data "equinix_fabric_port" em vez de data "equinix_ecx_port"

As alterações no modelo seriam:

Perfil do vendedor:

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

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

para

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

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

Ou, se ainda você busca por nome, você usaria a fonte de dados 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
}

Perfis de vendedores:

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

para

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

Porta:

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
}

para

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
}

Mapeamento de Recursos

  • Use resource "equinix_fabric_connection" em vez de resource "equinix_ecx_l2_connection"
  • resource "equinix_ecx_l2_connection_acceptor está obsoleto.
    • Adicione sua chave secreta da AWS e sua chave de acesso da AWS à propriedade additional_info em resource "equinix_fabric_connection" para AWS
    • Ou utilize o recurso equivalente aws_dx_connection_confirmation no provedor ' AWS '.
  • Use resource "equinix_fabric_service_profile" em vez de resource "equinix_ecx_l2_service_profile"

Alterações de modelo

Conexão 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>"
}

para

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 do serviço:

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"
}
}

para

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 ]
}
}

Migrando o estado do Terraform

Depois de alterarmos o modelo de acordo, podemos remover os recursos equinix_ecx_ antigos do estado do Terraform e importar os novos como recursos equinix_fabric_ por seus UUIDs.

Nos comandos terraform state e terraform import, usamos o tipo e o nome do recurso, separados por ponto:

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

Depois disso, nossos modelos devem estar em conformidade com o estado do Terraform e com os recursos upstream no Equinix Fabric. Podemos verificar a migração executando o comando terraform plan, que deverá mostrar que a infraestrutura está atualizada.

Esta página foi útil?