Skip to main content

Migration de Fabric v3 (ecx) vers Fabric v4 (fabric)

En décembre 2023, les API Fabric v3 ont été dépréciées et elles atteindront leur objectif final. Fin de vie (EOL) en juin 2024. Les ressources Terraform ecx sont basées sur celles-ci. Les API atteindront également leur fin de vie en juin 2024. Si vous les utilisez, ce guide vous sera utile. vous aidera à migrer vers les ressources Terraform fabric qui sont construites avec les API Fabric v4.

Les ressources Fabric v3 sont les sources de données et les ressources suivantes:

Sources de données:

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

Ressources:

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

Elles sont remplacées par la famille de ressources avec le préfixe equinix_fabric_.

Cartographie de l'ECX vers le Fabric

Toutes les ressources ECX sont limitées aux connexions de couche 2. Ceci est dû à le nombre limité de possibilités qui existaient à l'époque de Fabric v3. Les API Fabric v4 permettent les connexions de couche 2 et de couche 3.

Cela signifie que les ressources Fabric sont plus robustes, il n'y a donc pas de une correspondance exacte un par un, mais plutôt que les types de connexion ECX sont maintenant un sous-ensemble d'une ressource Fabric.

Mappages des sources de données:

  • Utilisez data "equinix_fabric_service_profile" au lieu de data "equinix_ecx_sellerprofile"
  • Utilisez data "equinix_fabric_service_profiles" au lieu de data "equinix_ecx_sellerprofiles"
  • Utilisez data "equinix_fabric_port" au lieu de data "equinix_ecx_port"

Les modifications apportées au modèle seraient les suivantes:

Profil du vendeur:

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

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

à

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

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

ou si vous voulez toujours faire une recherche par nom, vous utiliserez la source de données 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
}

Profils des vendeurs:

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

à

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

Port:

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
}

à

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
}

Cartographie des ressources

  • Utilisez resource "equinix_fabric_connection" au lieu de resource "equinix_ecx_l2_connection"
  • resource "equinix_ecx_l2_connection_acceptor est obsolète.
    • Ajoutez votre clé secrète AWS et votre clé d'accès AWS à la propriété additional_info dans resource "equinix_fabric_connection" pour AWS
    • Ou utilisez plutôt la ressource équivalente aws_dx_connection_confirmation dans le fournisseur 'AWS'.
  • Utilisez resource "equinix_fabric_service_profile" au lieu de resource "equinix_ecx_l2_service_profile"

Modifications du modèle

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

à

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

Profil du service:

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

à

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

Migration de l'état Terraform

Une fois le modèle modifié en conséquence, on peut supprimer les anciennes ressources equinix_ecx_ de l'état Terraform et importer les nouvelles en tant que ressources equinix_fabric_ par leurs UUID.

Dans les commandes d'état et d'importation de Terraform, nous utilisons le type et le nom de la ressource, séparés par un point:

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

Ensuite, nos modèles doivent correspondre à l'état Terraform et aux ressources en amont dans Equinix Fabric. Nous pouvons vérifier la migration en exécutant la commande terraform plan, qui devrait indiquer que l'infrastructure est à jour.

Cette page vous a-t-elle été utile ?