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 dedata "equinix_ecx_sellerprofile" - Use
data "equinix_fabric_service_profiles"em vez dedata "equinix_ecx_sellerprofiles" - Use
data "equinix_fabric_port"em vez dedata "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 deresource "equinix_ecx_l2_connection" resource "equinix_ecx_l2_connection_acceptorestá obsoleto.- Adicione sua chave secreta da AWS e sua chave de acesso da AWS à propriedade
additional_infoemresource "equinix_fabric_connection"para AWS - Ou utilize o recurso equivalente
aws_dx_connection_confirmationno provedor ' AWS '.
- Adicione sua chave secreta da AWS e sua chave de acesso da AWS à propriedade
- Use
resource "equinix_fabric_service_profile"em vez deresource "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.